2011-03-05 70 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