【发布时间】:2011-01-16 04:19:06
【问题描述】:
这段代码可以编译,但并不奇怪,它在链接时失败(没有找到 main):
清单 1:
void main();
链接错误:\mingw\lib\libmingw32.a(main.o):main.c:(.text+0x106) undefined reference to _WinMain@16'
但是,下面的代码可以正常编译和链接,但有一个警告:
清单 2:
void (*main)();
警告:'main' 通常是一个函数
问题:
在清单 1 中,链接器应具有 抱怨缺少“主要”。为什么 它在寻找 _WinMain@16 吗?
生成的可执行文件 清单 2 简直崩溃了。什么是 原因?
感谢您的宝贵时间。
【问题讨论】:
-
它崩溃是因为取消引用
void (*main)();会执行一个 NULL 指针(如果那是您的完整代码)