Re: [問題] C的考題
※ 引述《jcwilliam (william)》之銘言:
: 話說原PO今天參加筆試,遇到一題,想請教版上各位先進
:
: 遇到的問題: (題意請描述清楚)
: 有一個 main method 如下:
: int main(){
: cout<<"Hello Everyone!!"<<endl;
: return 0;
: }
: 題目的問題是,如何在不更改main method 內容的前提下,
: 使得輸出的畫面如下:
: Hey, I am coming.
: Hello Everyone!!
: Good bye.
:
: 關於這題,小弟當時想破了頭也想不出該如何改寫?
: 不知各位先進能否提供正確解答...
: Thanks in advance.
:
:
:
用 Windows 的 DLL 機制也可以做到 (其他作業系統怎麼用我不知道...)
// filename: main.cpp
// compile with: cl.exe main.cpp
#include <iostream>
using namespace std;
#pragma comment(lib, "dll.lib")
extern "C" {
__declspec(dllimport) void foo(void);
}
void bar() {
foo();
}
int main() {
cout<<"Hello Everyone!!"<<endl;
return 0;
}
分隔線分隔線分隔線分隔線分隔線分隔線分隔線分隔線分隔線分隔線
/*
filename: dll.c
compile with: cl.exe dll.c /LD
Reference: http://msdn.microsoft.com/en-us/library/ms682583.aspx (DLLMain)
*/
#include <windows.h>
#include <stdio.h>
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) {
if (fdwReason == DLL_PROCESS_ATTACH) {
printf("Hey, I am coming.\n");
} else if (fdwReason == DLL_PROCESS_DETACH) {
printf("Good bye.\n");
}
return TRUE;
}
__declspec(dllexport) void foo(void) {
printf("foo()..\n");
}
執行結果如下
D:\Desktop>main.exe
Hey, I am coming.
Hello Everyone!!
Good bye.
D:\Desktop>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.133.69
→
11/28 23:30, , 1F
11/28 23:30, 1F
→
11/28 23:33, , 2F
11/28 23:33, 2F
推
11/28 23:36, , 3F
11/28 23:36, 3F
推
11/28 23:40, , 4F
11/28 23:40, 4F
→
11/28 23:42, , 5F
11/28 23:42, 5F
→
11/28 23:43, , 6F
11/28 23:43, 6F
→
11/28 23:49, , 7F
11/28 23:49, 7F
→
11/28 23:49, , 8F
11/28 23:49, 8F
→
11/29 00:02, , 9F
11/29 00:02, 9F
→
11/29 00:11, , 10F
11/29 00:11, 10F
CRT 實作原理 (在調用 main() 之前先呼叫 _cinit 與 _initterm 函數)
http://blog.csdn.net/peteryxk/archive/2005/01/31/275564.aspx
※ 編輯: purpose 來自: 124.8.133.69 (11/29 00:13)
推
11/29 00:19, , 11F
11/29 00:19, 11F
推
11/29 00:20, , 12F
11/29 00:20, 12F
→
11/29 00:32, , 13F
11/29 00:32, 13F
→
11/29 00:32, , 14F
11/29 00:32, 14F
→
11/29 00:37, , 15F
11/29 00:37, 15F
推
11/29 00:38, , 16F
11/29 00:38, 16F
→
11/29 00:39, , 17F
11/29 00:39, 17F
→
11/29 00:41, , 18F
11/29 00:41, 18F
→
11/29 00:42, , 19F
11/29 00:42, 19F
→
11/29 01:11, , 20F
11/29 01:11, 20F
推
11/29 01:53, , 21F
11/29 01:53, 21F
推
11/29 02:30, , 22F
11/29 02:30, 22F
→
11/29 02:30, , 23F
11/29 02:30, 23F
→
11/29 03:21, , 24F
11/29 03:21, 24F
→
11/29 11:21, , 25F
11/29 11:21, 25F
推
11/29 19:41, , 26F
11/29 19:41, 26F
推
11/29 20:02, , 27F
11/29 20:02, 27F
推
11/29 20:19, , 28F
11/29 20:19, 28F
→
11/29 20:35, , 29F
11/29 20:35, 29F
推
11/29 20:48, , 30F
11/29 20:48, 30F
→
11/29 22:11, , 31F
11/29 22:11, 31F
推
12/01 15:41, , 32F
12/01 15:41, 32F
→
12/06 22:39, , 33F
12/06 22:39, 33F
討論串 (同標題文章)