vs中 main和_tmain的區別


用過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 compil e后仍為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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM