程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> main()和_tmain()有什麼區別,main_tmain區別

main()和_tmain()有什麼區別,main_tmain區別

編輯:C++入門知識

main()和_tmain()有什麼區別,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了,這下明白了吧

 

另外說明:

在網下看到有人問_tmain與main的區別,翻譯得一塌糊塗,我也順便翻譯一下:

用過C言語的人都知道每一個C的程序都會有一個main函數,但有時看別人寫的程序卻出現了_tmain,會感動很困惑。我當時也是很困惑,於是上網找資料看。現在將我得到的結果總結一下。因為並沒有什麼根據,如果有誤。歡迎指正:_tmain與main的區別

[@more@]

1。 main是C程序的函數,_tmain是main為了支持unicode所使用的main的別名
2。 _tmain的定義在<tchar.h>可以找到,如#define _tmain main,所以要加#i nclude <tchar.h>才能用。

3。因此_tmain compile後仍為main,所以都可以執行

另外,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[])

 

用_tmain()代替main()有什麼好處?
_tmain()是不是可以在程序搜索用命令行啟動的時候,決定arcv[]字符是ANSY或者UNICODE?
知道的朋友能講講嗎?
支持UNICODE我知道。具體體現在?我用main()WinMain()函數裡使用TCHAR,泛型函數,照樣可以支持源代碼分別編譯ASNY和UNICODE。所以我問_tmain()的區別是不是僅在於程序啟動的時候?
是不是用UNICODE不是在程序啟動的時候決定的,而是在程序編譯的時候看有沒有預處理定義"UNICODE",所以_tmain的作用就和使用TCHAR而非具體的char或w_char一樣,當編譯時定義了UNICODE時,就是wmain當沒定義時就是main,

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved