_T / L 傻傻搞不清楚?

我常常搞不清楚 _T 與 L 到底有什麼差別。今天毛毛在試,終於給它找出答案。

首先看 http://msdn.microsoft.com/zh-tw/library/c426s321(VS.80).aspx

看完之後,原來 _T 與 L 都是一個 macro,而它的功能依有沒有 define _UNICODE 而定。

由於 Unicode 使用 2 bytes,一般字元是 1 byte,分別對應到 wchar_t 與 char 這兩個型別。我們使用 _T 時,如果有 _UNICODE 定義,則轉成 wchar_t,否則沒有作用,依然用 char。而 L 則是不管定義,直接轉成 wchar_t。

而 TCHAR 這個定義,也可對應到 wchar_t 與 char,一樣視是否定義 _UNICODE 而定。

SO,如果遇到像 Messagebox 這種,要吃 wide character 的。就將字串直接宣告成 wchar_t 吧。

留言

熱門文章