1. 程式人生 > >vs中 main和_tmain的區別

vs中 main和_tmain的區別

include 哪裏 入口 tps 如果 tar .com main 進行

用過C的人都知道每一個C的程序都會有一個main(),但有時看別人寫的程序發現主函數不是int main(),而是int _tmain(),而且頭文件也不是<iostream.h>而是<stdafx.h>,會困惑吧?

一起來看看他們有什麽關系吧

首先,這個_tmain()是為了支持unicode所使用的main一個別名而已,既然是別名,應該有宏定義過的,在哪裏定義的呢?就在那個讓你困惑的<stdafx.h>裏,有這麽兩行

#include <stdio.h>
#include <tchar.h>

我們可以在頭文件<tchar.h>裏找到_tmain的宏定義


#define _tmain main

所以,經過預編譯以後, _tmain就變成main了,這下明白了吧

main()是標準C++的函數入口。標準C++的程序入口點函數,默認字符編碼格式ANSI
函數簽名為:
int main();
int main(int argc, char* argv[]);

_tmain()是微軟操作系統(windows)提供的對unicode字符集和ANSI字符集進行自動轉換用的程序入口點函數。
函數簽名為:
int _tmain(int argc, TCHAR *argv[])
當你程序當前的字符集為unicode時,int _tmain(int argc, TCHAR *argv[])會被翻譯成

int wmain(int argc, wchar_t *argv[])
當你程序當前的字符集為ANSI時,int _tmain(int argc, TCHAR *argv[])會被翻譯成
int main(int argc, char *argv[])


1. Main是所有c或c++的程序執行的起點,_tmain是main為了支持unicode所使用的main的別名 ._tmain()不過是unicode版本的的main() .

2. _tmain需要一個返回值,而main默認為0(int).

3. _tmain的定義在<tchar.h>可以找到,如#define _tmain main,所以要加
#include <tchar.h>才能用。_tmain()是個宏,如果是UNICODE則他是wmain()否則他是main().

4. _tmain這個符號多見於VC++創建的控制臺工程中,這個是為了保證移植unicode而加入的 (一般_t、_T、T()這些東西都是宏都和unicode有關系),對於使用非unicode字符集的工程來說,實際上和main沒有差別(其實就算是使用unicode字符集也未必有多大的差別)。

5. 因此_tmain compile後仍為main,所以都可以執行.

main(),wmain是WINDOWS的控制臺程序(32BIT)或DOS程序(16BIT).

WinMain(),wWinMain()是WINDOWS的GUI程序.

另外,wmain也是main的另一個別名,是為了支持二個字節的語言環境

-----------------------

int main( int argc, char *argv[ ], char *envp[ ])

wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )

int _tmain(int argc, _TCHAR* argv[ ])

原文地址:vs中 main和_tmain的區別 - 攻城師 - CSDN博客 http://blog.csdn.net/u010104710/article/details/48968879

     _tmain()和main()有什麽區別?_百度知道 https://zhidao.baidu.com/question/318393902.html

vs中 main和_tmain的區別