不知道是不是ACM以来的习惯的问题,本人从来就是char*,wchar_t*,TCHAR*。。。不常用PSTR、LPSTR这些。。。
下面做下简单总结
typedef char CHAR; typedef wchar_t WCHAR; #define CONST const
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也没用过几次。。。