解决方法
实际typedefs HANDLE的标题是winnt.h.不幸的是这是15K行 – 在这里,所以通过包括细长的windef.h来解决你的问题有点误导.
这是我系统中的相关部分(显然,细节可能会从修订版更改为修订版,但在实现级别不会更改,因为这会破坏现有的二进制文件):
// // Handle to an Object // #ifdef STRICT typedef void *HANDLE; #if 0 && (_MSC_VER > 1000) #define DECLARE_HANDLE(name) struct name##__; typedef struct name##__ *name #else #define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name #endif #else typedef PVOID HANDLE; #define DECLARE_HANDLE(name) typedef HANDLE name #endif typedef HANDLE *PHANDLE;
PS必须喜欢这个发货Microsoft头文件中的#if 0.