PSTR、LPSTR等宏原型
1、首先介紹char、wchar_t ,寬字符wchar_t和窄字符char.
窄字符char了,大家都很清楚,就是8bit表示的byte,長度固定。char字符只能表示ASII碼表中的256個字符,包括前128個可見字符和後面的128個不可見字符。
寬字符wchar_t是Unicode字符的數據類型,wchar_t 的 w, 表示 wide,後綴 t,表示 type。在很多平臺上,wchar_t 定義為 typedef unsigned short wchar_t;傳統的 char 大小為1個字節,可表示的字符數量很有限,為窄字符。wchar_t 通常大小為 2 字節(有些平臺上可能為 4 字節),相對 char 來說,就為寬字符(wide character),wchar_t 大小足夠表示 unicode 編碼。
在字符串前面加L,可以表示 wchar 字符串。比如const wchar_t* str = L"中國";
2、各種宏定義
typedef char CHAR; typedef wchar_t WCHAR; typedef CHAR* PCHAR,*PCH,*LPCH,*NPSTR,*PSTR,*LPSTR; typedef CONST CHAR* PCCH,*LPCCH,*PCSTR,*LPCSTR; typedef WCHAR *PWCHAR,*NWPSTR,*PWCH,*LPWCH,*PWSTR,*LPWSTR; typedef CONST WCHAR* PCWCH,*LPCWCH,PCWSTR,LPCWSTR; typedef/* [string] */ WCHAR __RPC_FAR *LPWSTR; typedef /* [string] */ TCHAR __RPC_FAR *LPTSTR; typedef LPSTR LPTCH, PTCH; typedef LPSTR PTSTR, LPTSTR; typedef LPCSTR LPCTSTR;
為了統一成大寫,C++給char,wchar_t,const 取了個大寫別名。
理解以上的命名規則就可以記住每種別名帶表什麽意思
N:代表near,在16位系統中代表16位的段內地址
L:代表long(far),在16位系統中代表16位的段地址+16位的偏移地址
在32位系統中 N和L已經沒有作用,只是為了向前兼容(兼容16位機器)才保留這些定義。
P:代表指針
C:代表CONST(const)
W:代表WCHAR(wchar_t)
T:代表宏_T(一個兼容的宏,當定義了UNICODE或者_UNICODE是表示WCHAR,否則表示char)
CH:char的簡寫
STR:string的簡寫
明白了以上每個字母代表什麽含義之後,只要知道排列順序即可。正則表達式:[L/N][P][C][W/T][CH/STR]
突然發現 typedef也沒用過幾次。。。
原文博客:http://blog.csdn.net/w343051232/article/details/7083276
參考問答:https://www.zhihu.com/question/27174874
PSTR、LPSTR等宏原型