常用的typedef 定义
阅读原文时间:2023年07月09日阅读:2

今天开始学习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两个版本中来回切换使用而不用改代码。

让你不再晕,完整诠释PCHAR、LPCH、PCH、NPSTR、LPSTR、PSTR - 失落‘80 - 博客园 (cnblogs.com)