我有一个严重的问题。我有两个命名空间内的枚举如下:
namespace FANLib {
namespace ERROR {
enum TYPE {
/// FSL error codes
FSL_PARSER_FILE_IERROR,...
在我的代码的其他地方,我像这样使用它:
FANLib::Log::internalLog(FSLParser::FILE_IERROR, file_ierror, true, FANLib::ERROR::FSL_PARSER_FILE_IERROR);
所有编译都很顺利,但是如果我包含“windows.h”,就会出现错误!问题出在“WinGDI.h”中,它有这样一行代码:
#define ERROR 0
并让编译器认为,在 FANLib::... 之后有一个零!我收到的错误是:
错误1 error C2589:'constant':'::'右侧的非法标记
错误2 error C2059:语法错误:'::'
错误3 error C2039:'FSL_PARSER_FILE_IERROR':不是 '`global namespace'' 的成员
是否有什么方法可以解决这个问题,而无需由于一些没有考虑周全的 #define
而更改我的命名空间?我在另一篇帖子中读到可以 #undef ERROR,但那样安全吗?