VC ++允许/ ## /作为宏的值 - 如何在eclipse / mingw-gcc中处理它?

时间:2012-02-06 19:46:45

标签: c++ winapi gcc mingw

我试图在eclipse / mingw-gcc中编译一个真正的win32应用程序,直到现在都没有成功(参见https://stackoverflow.com/questions/9162976/how-to-compile-a-win32-application-in-eclipse-using-the-mingw-gcc-toolchain

无论如何,在排除另一个错误时,文件 c:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Include \ WTypes.h 中的以下行已经抓住了我的好奇心:

#define _VARIANT_BOOL    /##/

在{{1>}来自 C:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v7.0A \ Include \ OAIdl.h 中使用

struct tagVARIANT

扩展为:

VARIANT_BOOL boolVal;
_VARIANT_BOOL bool;
SCODE scode;

因为VARIANT_BOOL boolVal; SCODE scode; 已扩展为/##/,因此开始发表评论!我不相信它符合标准,并且确实尝试在mingw-gcc中编译失败:

//

所以,我正在寻找有关如何解决这个问题的建议。

1 个答案:

答案 0 :(得分:0)

你需要弄清楚宏在什么条件下有问题定义,并且在这种情况下取​​消它。如果没有办法告诉,那就无条件地取消它,并希望没关系。 :(

#include <problem-header.h>

#if whatever condition makes sense
#undef _VARIANT_BOOL
#endif

.....

#ifdef _VARIANT_BOOL
_VARIANT_BOOL bool;
#endif