常用的typedef 定义
今天开始学习VC++基础,系统编程栏目下都是WinAPI和MFC的内容,此为浏览博客园时学习的一篇文章,觉得很实用,拿来做笔记。
出处见最底部。
三行代码:
typedef
char
CHAR
;
typedef
CHAR
*
PCHAR
,*LPCH,*PCH,*NPSTR,*
LPSTR
,*
PSTR
;
typedef
CONST
CHAR
*LPCCH,*PCCH,*
LPCSTR
,*
PCSTR
;
解释:
1. 第一行:
CHAR
就是
char
类型,只是一个大写一个小写。
2. 第二行:
PCHAR
是一个指向字符的
char
型指针,因为P就有指针的含义,而
CHAR
有字符的含义。
3. 第二行:LPCH和PCH含义一样,都是指向字符的指针。那为什么第一个前面加L,这是历史遗留问题,以前分远指针(开头加L)和近指针(开头加N),现在指针都是四个字节,不分远近,加N和加L都一样,不要被L误导,当你看到LPCH时把它看成PCH就可以了。
4. 第二行:同理NPSTR、
LPSTR
和
PSTR
都一样,都把它看成
PSTR
,表示指向字符串的指针。STR就是string的缩写。
5. 第三行:LPCCH和PCCH与第二行LPCH和PCH相比多了一个C,为什么?你看定义是不是有一个CONST,表示这是常量指针,就是不能修改指针指向的内容,所以多了一个C。LPCCH和PCCH表示指向一个字符的常量指针。
LPCSTR
和
PCSTR
表示指向字符串的常量指针。
接着看四行代码:
typedef
unsigned
short
wchar_t
;
typedef
wchar_t
WCHAR
;
typedef
WCHAR
*
PWCHAR
,*LPWCH,*PWCH,*NWPSTR,*
LPWSTR
,*
PWSTR
;
typedef
CONST
WCHAR
*LPCWCH,*PCWCH,*
LPCWSTR
,*
PCWSTR
;
解释:
1. 第二行:
WCHAR
实际就是unsigned
short
类型,W就是word的缩写,占两个字节。
2. 第三行:
PWCHAR
、LPWCH、PWCH表示指向宽字符的unsigned
short
指针;
LPWSTR
和
PWSTR
表示指向字符串的unsigned
short
指针。
3. 第三行:表示常量指针。
最后看这七行代码:
#indef UNICODE
typedef
unsigned
short
TCHAR
,*
PTCHAR
,*PTCH,*LPTCH,*
PTSTR
,*
LPTSTR
;
typedef
const
unsigned
short
*
LPCTSTR
;
#else //ANSI
typedef
char
TCHAR
,*
PTCHAR
,*PTCH,*LPTCH,*
PTSTR
,*
LPTSTR
;
typedef
const
char
*
LPCTSTR
;
#endif
将二三行和五六行代码对比可知,除了类型由unsigned
short
变成
char
其他都没变,其中每个都含有有一个T,表示通用,可以在ANSI和Unicode两个版本中来回切换使用而不用改代码。