#undef主没有给出结果
问题描述:
我正在使用MVisualC++ 2010,当我尝试取消定义“main”时,没有结果,控制台像往常一样启动。我期待一些缺少入口点错误或什么的。 这是为什么?#undef主没有给出结果
#undef main
int main()
{
}
答
主要不是#define
摆在首位。您的#undef
根本不会改变。
#define foo bar
告诉预处理器“用条替换foo的所有出现”。 #undef foo
告诉预处理器“富没有特殊的意义了,离开它,因为是”
如果你想有一个链接错误,请重命名main
到例如main2
,或者例如这样的:
void foo();
int main() {
foo();
}
这告诉一个真实存在的foo
功能(但它不是什么)编译器。 main
试图使用它,所以链接器将无法找到它时会报错。
因此,如果我在使用SDL时使用undef main,那么我不使用标准库,只是使用SDL中实现的一些东西? – Neomex 2011-03-05 09:55:37
如果有人告诉您不要定义main,则表示“不创建主要功能”。术语define与'#define'不同,它的意思是“创建这个函数/变量” – Erik 2011-03-05 09:58:01
在SDL上,我不使用这个,但我相信它的作用是使用#define来“重命名”main 。在这种情况下,您的#undef将取消重命名,而SDL自己的'main'不会被调用。 – Erik 2011-03-05 10:01:14