【发布时间】:2018-02-20 17:49:30
【问题描述】:
我刚开始研究 WINAPI,我在 Windows 数据类型网页上注意到的第一件事就是冗余。例如 LONG32 在 BaseTsd.h 中声明为
typedef signed int LONG32;
和 INT32,也在 BaseTsd.h 中声明
typedef signed int INT32;
DWORD 在 IntSafe.h 中声明为
typedef unsigned long DWORD
而 ULONG 在 WinDef.h 中声明为
typedef unsigned long ULONG;
如果在实践中它们都相同,为什么会有不同的数据类型?
我们也有这个
typedef HANDLE HCONVLIST; //A handle to a DDE conversation list.
typedef HANDLE HDC; // A handle to a device context (DC).
typedef HANDLE HDDEDATA; // A handle to DDE data.
如果它们都是 HANDLE 类型,为什么会有不同的数据类型?
【问题讨论】:
-
另外,关于
HANDLE,当STRICT启用时,大多数句柄类型实际上根本不是同一类型。大多数句柄类型是使用DECLARE_HANDLE()宏声明的,因此当启用STRICT时它们映射到唯一的结构类型,而当禁用STRICT时映射到void*。但它们不是像您展示的那样简单的HANDLE类型定义。
标签: winapi