dan*_*jjl 5 c++ program-entry-point sdl mingw g++
如果程序不使用命令行传递的参数,为什么编译具有int main(void)main函数的程序与编译具有int main(int argc, char *argv[])main函数的程序不同?
这个OS或编译器是否具体?我使用mingw和g ++得不到相同的结果(这很奇怪不是因为wingw是gcc的一个端口).
#include <iostream>
#include"SDL/SDL.h"
int main(void)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
g++ test.cpp; #g++ 4.4.5
i586-mingw32msvc-g++ test.cpp; # mingw 4.4.4
Run Code Online (Sandbox Code Playgroud)
(由第二个命令给出.)
a(main.o):(.text+0x85): undefined reference to `_WinMain@16'
Run Code Online (Sandbox Code Playgroud)
jro*_*rok 10
这是SDL的事情.在Windows上,当您包含时SDL.h,main重新定义了SDL_main哪些调用WinMain(非控制台Windows应用程序中的真正入口点),进行一些初始化并最终调用主代码.它有一个签名argc,并argv和你几乎必须遵循它,所以int main()将无法正常工作.