我有一些要与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

10-08 16:18