我们都知道,main()函数是console程序的入口函数,而winMain()是win32 Application程序的入口函数。但是在一些程序中,我们会看到如wmain(),wWinMain(),_tmain,_tWinMain()之类的函数入口,下面是个人的理解:
main()函数是console程序的入口。而wmain是unicode字符集环境下的console入口函数。 winMain()是win32 Application的入口函数。而wWinMain()是unicode环境下的win32 Application的入口函数。
然而,一般情况下,我们并不知道当前编译环境是否为unicode,这时候我们可以用_tmain()或_tWinMain()来代替main()/wmian()或者winMain()/wWinMain(),因为_tmain()和_tWinMain()函数会根据当前编译环境来决定调用对应的入口函数,比如用_tmain(),这样编译器会根据当前的编译环境是否为unicode来决定调用main()或者wmain(),如果编译器环境是unicode,则调用wmain(),否则调用main()函数。
实际上,_tmain和_tWinMain都是宏定义,代码可以简单理解如下:
#ifdef _UNICODE
#define _tmain wmain
#define _tWinMain wWinMain
#else
#define _tmain main
#define _tWinMain winMain
#endif
这样编译器会自己根据当前编译环境是否为unicode来决定调用哪个入口函数,这样也是为了能够兼容unicode编译环境。
注:以上为个人理解,如果有什么地方理解错误或者需要改进,希望各位大神不吝赐教!谢谢!