如何转发声明HANDLE?我不想在此特定 header 中包含所有windows.h

最佳答案

实际typedefs HANDLE的 header 是winnt.h。不幸的是,这是15,000行-在这里,因此通过包含slimline 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

关于c++ - 如何转发声明的HANDLE? (Win32的),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4121173/

10-13 06:49