如何转发声明HANDLE
?我不想在此特定标头中包含所有windows.h
。
答案 0 :(得分:4)
实际typedef 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
。
答案 1 :(得分:2)
#include
编辑<windef.h>
而不是<windows.h>
。如果有人有这样的话,我仍然希望能够转发声明只是处理。