1. 程式人生 > >PSTR、LPSTR等宏原型

PSTR、LPSTR等宏原型

wps 字符數 ons byte 編碼 一個 com lpcwstr 長度

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等宏原型