作爲一個更大的項目(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