问题
如果程序不使用命令行传递的参数,为什么编译一个具有 int main(void)
主函数的程序会与编译一个具有 int main(int argc, char *argv[])
主函数的程序不同?
这是操作系统还是编译器特定的?我使用 mingw 和 g++ 不会得到相同的结果(这很奇怪,因为 wingw 是 gcc 的一个端口)。
示例
代码
#include <iostream>
#include"SDL/SDL.h"
int main(void)
{
return 0;
}
编译命令
g++ test.cpp; #g++ 4.4.5
i586-mingw32msvc-g++ test.cpp; # mingw 4.4.4
错误
(由第二个命令提供。)
a(main.o):(.text+0x85): undefined reference to `_WinMain@16'
int main(int argc, char *argv[])
是“正确”的。我建议在您的所有 C 和 C++ 代码中始终使用后一种形式。 - paulsm4int main(void)
也是正确的。 - James McNellisargc
或argv
,编译int main(int argc, char *argv[])
将会提示未使用的参数警告,而int main()
则不会。这是一个明显的区别。那么,您观察到了哪些其他的区别呢? - Daniel Fischer