代码改变世界

main,tmain,winmain()等函数——UNICODE

2011-05-06 10:40  sensensen  阅读(696)  评论(0编辑  收藏  举报

最近使用Visual Studio 2008 发现 入口函数为_tmain,google一下,得解:

1.main是C程序的函数,_tmain是main为了支持unicode所使用的main的別名
2._tmain的定义在<tchar.h>可以找到,如#define _tmain main,所以要加#include <tchar.h>才能用。
_tmain()是个宏,如果是UNICODE则他是wmain()否则他是main()

3.因此_tmain compile后仍为main,所以都可以执行
main()是WINDOWS的控制台程序(32BIT)或DOS程序(16BIT),
WinMain()是WINDOWS的GUI程序,
wmain()是UNICODE版本的main(),
_tmain()是个宏,如果是UNICODE则他是wmain()否则他是main()

_tWinmain()是个宏,如果是UNICODE则他是wWinmain()否则他是WinMain();
另外,wmain也是main的另一個别名,是为了支持二个字节的语言环境

main是控制台程序的入口;

winMain是win32   Application程序的入口;

_t是为了UNICDOE的兼容。

_tmain的定义可以通过go to definition找到,有一个条件编译

#ifdef _UNICODE
。。。这部分编译
#else
。。。这部分不编译
因为默认的VS2008中的是支持_UNICODE的,所以程序中#else下的部分是灰色的,因为不编译了。否则,就该上面的是灰色了。