關於WCHAR

在<WCHAR.h>頭文件中有定義
typedef unsigned short wchar_t;
就是 wide character type 的意思

在 美國資訊交換標準碼(ASCII: American Standard Code for Information Interchange)
開發過程中 爲了節約成本(排除8位, 當時每位元的存儲空間成本很昂貴) 最終由美國國家標準協會發布了7位版本的方案 記錄在ANSI X3.4-1986 中
該標準在美國及拉丁字母國家使用方便 但在遠東 西歐南部 會遇到拉丁字母中不存在的字母
比如俄語(斯拉夫) 希臘語 希伯來語 阿拉伯語 以及 漢字 日語 韓語
爲了解決的字符集不同的噁心問題(內碼轉換) 誕生了Unicode字元集 它比ASCII多了一倍空間

這個wchar_t 就是Unicode對應的資料結構 它是16位的 可以裝得下漢字哦
wchar_t *p = L"ooxx!"; 這個L告訴編譯器, 把字母擴展爲寬字元
你也會見到 _T(ooxx) 或者 TEXT(之類的寫法) 他們都是爲了讓你的代碼能在美歐以外運行

#ifdef UNICODE               //UNICODE版
    #define __T(x) L##x    //這##字符串連接符 你應該知道滴
#else                               //ASCII版
    #define __T(x) (x)
#endif
#define _T(x)  __T(x)
#define _TEXT(x)  __T(x)
因此他們都是一樣的

在windows的編程中 更普遍的寫法是用WCHAR取代wchar_t
因爲符合微軟的命名規則 當然你如果喜歡Linux的話...
typedef char CHAR
typedef wchar_t WCHAR

如果你的代碼是國際版本(多語言版)
你也可以用TCHAR.. 它是一個依賴識別字的宏 可以是char 也可以是wchar_t
發佈了18 篇原創文章 · 獲贊 5 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章