枚举与UNICODE定义冲突

时间:2013-05-17 00:02:39

标签: c++

我正在开发一个C ++项目(VC ++),其中选择了“使用Unicode字符集”。

enter image description here

设置UNICODE和_UNICODE。同时,包含的第三方.h文件恰好在枚举中包含“UNICODE”,这两者是冲突的。

enum Encoding {
  ...
  UNICODE              = 17,  // Teragram Unicode
  ...
}

IDE抱怨'错误C2059:语法错误:'常量',因为我要在枚举中使用的UNICODE变成了数字1.我有什么方法可以逃避枚举名称?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您可以添加声明:

#undef UNICODE
枚举前的

。这里的问题是UNICODE现在将是未定义的,因此例如你的TCHAR将成为常规char。这是枚举值的可怕名称。为了避免这种情况,你必须大量使用包含的顺序。

答案 1 :(得分:0)

不考虑效率,这是c / c ++枚举的真正缺点。

每当我遇到这样的问题时,我都会尝试以下两种解决方案:

  1. 添加名称空间以保护它们。

  2. 添加枚举名称的前缀:ENCODING_UNICODE