跳转至

编码约定

数据类型

在 Win32 的程序中,你可能会看到很多完全不知道是什么的数据类型。下面就为大家简单讲解一下。

BOOL

Win32 中,不会使用 bool,而是将 int 定义为 BOOL,这时,所有非 \(0\) 值都被认为是假。WinDef.h 定义了 TRUE 等于 \(1\)FALSE 等于 \(0\)。但在判断一个 BOOL 值是否为真时,我们不应使用 if (x == TRUE),而使用 if (x != FALSE)

指针

如果一个数据类型以 PLP 开头,就是一个指针类型。对于现在来说,这两者没有区别。MSDN 告诉我们「应避免使用这些前缀,如果必须使用一个,则使用 P」。

字符串

在 Win32 中,因为有 ANSI 和 Unicode 两种编码方式,所以为了方便写程序,它定义了一些字符的数据类型。

定义的类型 实际的类型
CHAR char
WCHAR wchar_t
TCHAR ANSI 中定义为 char,Unicode 中定义为 wchar_t
PSTRLPSTR char*
PCSTRLPCSTR const char*
PWSTRLPWSTR wchar_t*
PCWSTRLPCWSTR const wchar_t*
PTSTRLPTSTR ANSI 中定义为 char*,Unicode 中定义为 wchar_t*
PCTSTRLPCTSTR ANSI 中定义为 const char*,Unicode 中定义为 const wchar_t*

由此可见,在使用时可直接使用 TCHARPTSTRPCTSTR,即可避免出现编码混乱的问题。

对于没有介绍的数据类型,可能是不重要的数据类型,也可能是结构体,这时就需要查询 MSDN 来了解这种数据结构。

匈牙利命名法

Win32 中用到了很多使用匈牙利命名法的变量。匈牙利命名法的规则是将变量名命名为属性+类型+描述。关于常见的前缀可以看 MSDN其实是我懒得抄上来