如何輸出_tmain中的argv[]
作者:Tuuzed(土仔) 版權聲明:可以任意轉載,轉載時請務必以超鏈接形式標明文章原始出處和作者信息及本聲明。http://www.shnenglu.com/tuuzed/archive/2008/02/23/43153.html 使用過VS2005中VC++的大俠們應該對_tmain不陌生。是的,_tmain是Microsoft自己弄出來的東西,關于它的問題網(wǎng)上有一堆(GOOGLE Search)。今天想用VS2005中的VC++做一個WIN32控制臺(console)下的應用程序,向導程序默認給出的是以下內(nèi)容: 1#include "stdafx.h"23int _tmain(int argc, _TCHAR* argv[])4{56 return 0;78}9 想當然,很好,很容易。試試列出命令的參數(shù):
運行結果竟然是這樣的:
D:\MyData\CSharp\Projects\test\Debug>test 1 003A5210
1
003A5210
“003A5210”是什么值?一開始就弄不懂了。
如果把_tmain函數(shù)變?yōu)椋?/span>
運行結果正常:
D:\MyData\CSharp\Projects\test\Debug>test 1 d:\MyData\CSharp\Projects\test\Debug\test.exe
D:\MyData\CSharp\Projects\test\Debug>test
d:\MyData\CSharp\Projects\test\Debug\test.exe
頭大了。最后分別對兩個函數(shù)運用斷點中的反匯編看看,發(fā)現(xiàn)原來**argv竟然是wchar_t**,再翻弄了一下_TCHAR的聲明:typedef wchar_t _TCHAR;一切明白了。要輸出這個_TCHAR只能用cout的另一個版本:wcout。為什么呢?原因很簡單,因為他們都帶了一個“w”在前面啊!
能正確輸出_TCHAR* argv[]的版本:
給出一個網(wǎng)上對_tmain的一個有用的定義: 對于ANSI版本,"_tWinMain"就是"WinMain";對于UINCODE版本,"_tWinMain"就是"wWinMain"。
(比如這樣的定義:)
所以,_tmain()不過是unicode版本的的main()
Powered by: C++博客 Copyright © 土仔