我正在开发一个C ++项目(VC ++),其中选择了“使用Unicode字符集”。
设置UNICODE和_UNICODE。同时,包含的第三方.h文件恰好在枚举中包含“UNICODE”,这两者是冲突的。
enum Encoding {
...
UNICODE = 17, // Teragram Unicode
...
}
IDE抱怨'错误C2059:语法错误:'常量',因为我要在枚举中使用的UNICODE变成了数字1.我有什么方法可以逃避枚举名称?我该如何解决这个问题?
答案 0 :(得分:1)
您可以添加声明:
#undef UNICODE
枚举前的。这里的问题是UNICODE现在将是未定义的,因此例如你的TCHAR将成为常规char。这是枚举值的可怕名称。为了避免这种情况,你必须大量使用包含的顺序。
答案 1 :(得分:0)
不考虑效率,这是c / c ++枚举的真正缺点。
每当我遇到这样的问题时,我都会尝试以下两种解决方案:
添加名称空间以保护它们。
添加枚举名称的前缀:ENCODING_UNICODE