如何忽略定义(VS2008)

时间:2009-06-24 20:50:52

标签: c++ visual-studio-2008 enums

我有一些我想用VS2008编译的源代码,但我必须解决许多错误。 现在有一些枚举像:

enum
{
BACKGROUND  = 0x00000001,
WEAPON      = 0x00000002,
TRANSPARENT = 0x00000004
}

问题在于TRANSPARENT被定义为:

#define TRANSPARENT         1

在WinGDI.h中

这将导致编译错误,如:

error C2143: syntax error : missing '}' before 'constant'

是否可以修复该错误而无需重命名枚举中的字段并且不从包含中删除WinGDI.h(我不知道它包含在哪里......)

2 个答案:

答案 0 :(得分:2)

如果您没有使用WinGDI.h中的值TRANSPARENT,您只需添加:

#undef TRANSPARENT

在枚举之前

(这只是一种解决方法,最好在枚举中重命名TRANSPARENT)。

答案 1 :(得分:2)

您可以使用

#undef TRANSPARENT

但如果之后使用WinGDI TRANSPARENT,则可能在其他地方导致错误。一个(混乱的)解决方法可能是:

#ifdef TRANSPARENT
#define _TRANSPARENT TRANSPARENT
#undef TRANSPARENT
#endif

并在您的代码之后:

#ifdef _TRANSPARENT
#define TRANSPARENT _TRANSPARENT
#endif