作为更大项目(Mozilla Firefox 的 ff activex 插件)的一部分,有以下代码片段:
if (CombineRgn(hrgnClip, hrgnClip, hRGN, RGN_AND) != ERROR)
{
::InvalidateRgn(m_hWndParent, hrgnClip, fErase);
}
当我在 VS2012 中构建时,我得到“错误 C2065:'ERROR':未声明的标识符”错误在wingdi.h 中定义如下:
...
/* Region Flags */
#define ERROR 0 // it wont build when this macro is used
#define NULLREGION 1 // it builds when this macro is used
#define SIMPLEREGION 2
#define COMPLEXREGION 3
#define RGN_ERROR ERROR
...
奇怪的是,如果我在上面的if语句中用 NULLREGION 或 SIMPLEREGION (它们是同一文件中的宏,仅在有问题的行下方两行)替换 ERROR(只是为了查看它是否构建正常),则代码构建正常。当我使用 ERROR 时,代码不会构建。上面定义的 ERROR 宏是否有可能被某个关键字或另一个宏或 Visual Studio 中的某个宏所掩盖?