2011-03-05 78 views
0

我正在使用MVisualC++ 2010,當我嘗試取消定義「main」時,沒有結果,控制檯像往常一樣啓動。我期待一些缺少入口點錯誤或什麼的。 這是爲什麼?#undef主沒有給出結果

#undef main 
int main() 
{ 
} 

回答

7

主要不是#define擺在首位。您的#undef根本不會改變。

#define foo bar告訴預處理器「用條替換foo的所有出現」。 #undef foo告訴預處理器「富沒有特殊的意義了,離開它,因爲是」

如果你想有一個鏈接錯誤,請重命名main到例如main2,或者例如這樣的:

void foo(); 
int main() { 
    foo(); 
} 

這告訴一個真實存在的foo功能(但它不是什麼)編譯器。 main試圖使用它,所以鏈接器將無法找到它時會報錯。

+0

因此,如果我在使用SDL時使用undef main,那麼我不使用標準庫,只是使用SDL中實現的一些東西? – Neomex 2011-03-05 09:55:37

+0

如果有人告訴您不要定義main,則表示「不創建主要功能」。術語define與'#define'不同,它的意思是「創建這個函數/變量」 – Erik 2011-03-05 09:58:01

+0

在SDL上,我不使用這個,但我相信它的作用是使用#define來「重命名」main 。在這種情況下,您的#undef將取消重命名,而SDL自己的'main'不會被調用。 – Erik 2011-03-05 10:01:14