作为一个更大的项目(FF的ActiveX插件的Mozilla Firefox)有此代码段的一部分:奇怪的错误C2065:“错误”:未声明的标识符
if (CombineRgn(hrgnClip, hrgnClip, hRGN, RGN_AND) != ERROR)
{
::InvalidateRgn(m_hWndParent, hrgnClip, fErase);
}
当我建立在VS2012我得到“错误C2065:“错误”:未声明的标识符“ 错误是在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
...
奇怪的是,如果我替换ERROR(只是看它是否建立OK)与NULLREGION或SIMPLEREGION(它们是ma交叉在同一个文件中,只有两行在违规之下)如果以上声明,代码生成OK。当我使用ERROR时,代码不会生成。 上面定义的错误宏是否可能被某些关键字或另一个宏或Visual Studio中的某些类掩盖了?
尝试在调试器中查看当前的ERROR含义。它可能被掩盖了。 – akalenuk
1)你有什么标题? 2)可能是你的'ERROR'定义在'#ifdef SOME_FLAG' ...'#endif'块上? – eraxillan
确定'#undef ERROR'后面的任何位置?可以在文件本身或包含文件后包含行吗? – Jimbo