我有一些要与VS2008一起编译的源代码,但是有很多错误我必须修复。
现在有一些枚举,例如:
enum
{
BACKGROUND = 0x00000001,
WEAPON = 0x00000002,
TRANSPARENT = 0x00000004
}
问题是TRANSPARENT定义为:
#define TRANSPARENT 1
在WinGDI.h中
这将导致编译错误,例如:
error C2143: syntax error : missing '}' before 'constant'
是否可以解决该错误而无需重命名枚举中的字段,也无需从包含中删除WinGDI.h(我不知道它的包含位置。。)
最佳答案
您可以使用
#undef TRANSPARENT
但是,如果此后使用WinGDI TRANSPARENT,则可能在其他地方导致错误。 (混乱)的解决方法可能是:
#ifdef TRANSPARENT
#define _TRANSPARENT TRANSPARENT
#undef TRANSPARENT
#endif
在您的代码之后:
#ifdef _TRANSPARENT
#define TRANSPARENT _TRANSPARENT
#endif