即使学习 C 语言的开发者,在第一次接触 Windows 编程的时见到像 LPCTSTR、TCHAR 这样的类型时都会觉得很难理解。请不要害怕,接下来我会介绍 Microsoft 是如何利用 C 语言中提供的基础类型定义出各种复杂 Windows 数据类型的。
C 语言中默认使用 char 表示一个字符,一个 char 对应一个字节,8 个 bit,一共可以表示 256 个字符,表示的字符数量有限,因此 C 语言后来引入了使用两个字节来表示字符的类型——wchar_t,该类型的定义如下:
typedef unsigned short wchar_t;
也就是说 wchar_t 本质上就是一个 unsigned short。为了便于区分,我们这里将 char 表示的字符(串)称之为单字符(串),将 wchar_t 表示的字符(串)称之为宽字符(串)。
编译器为了表示宽字符(串)引入了 L 符号来表示一个宽字符(串),示例如下: