2009-02-18 48 views

回答

12

那麼,一個實際的區別是我的平臺上不存在WCHAR。僅適用於Windows(並且無意將程序移植到其他平臺),並且包含必要的標題,這是相同的(因爲WCHAR只是typedef)。

0

實際上說沒有太大的區別。它們都代表相同的基礎類型。一個2字節的寬度值。

LIBT將在不久給你各種平臺的C++標準:)

+2

重要的是要注意這僅在Windows上有效。 WCHAR是Windows特定的typedef(或者它是#define?),sizeof(wchar_t)取決於平臺。在Linux(和,IIRC,Solaris)上,例如,它是4個字節。 – 2009-02-18 16:44:05

15

wchar_t是一種獨特類型,由C++標準定義之間的真正精神失常的差異。

WCHAR標準,據我所知,只存在於Windows上。但是,對於wchar_t,它僅僅是typedef(或可能是宏),所以它沒有實際區別。

MSVC的舊版本沒有wchar_t作爲第一類類型,相反,它只是一個typedefshort

最有可能的,微軟推出WCHAR在整個任何編譯器版本代表了「寬字符類型」,是否存在wchar_t作爲本機類型。

您應該在代碼中使用wchar_t。這就是它的目的。

4

有沒有人知道WCHAR是幾歲?我會想到它至少可以用於Windows NT 3.1。我推測,當微軟在Windows頭文件中開始使用WCHAR時,wchar_t未在C或C++標準中定義。如果我錯了,請糾正我。

微軟不得不支持聲明和頭文件,這些聲明和頭文件a)必須在C和C++中工作; b)在非常不同的體系結構下編譯(i86,MIPS,PowerPC,Alpha,...)和c)必須與爲15歲以上的編譯器編寫的源代碼向後兼容。另外,過去二十年中發佈的任何突破性更改和數千本書籍,參考手冊,在線文檔等將突然變爲錯誤。

WCHAR是一個接口 - 一旦它發佈出來,它就是用石頭寫成的,即使它不是新代碼所需要的。

0

typedef wchar_t WCHAR; // WC,

這是在winnt.h.So定義的16位UNICODE字符最初是爲wchar_t WCHAR是abbrivation它。你可以使用wcscat,wcslen等功能都