如何转发声明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/