0

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

在此处输入图像描述

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

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

IDE 报错'error C2059: syntax error: 'constant',因为我想在枚举中使用的 UNICODE 变成了数字 1。有什么办法可以转义枚举名称吗?我该如何解决这个问题?

4

2 回答 2

1

您可以添加一个语句:

#undef UNICODE

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

于 2013-05-17T00:05:49.950 回答
0

抛开效率不谈,这是 c/c++ 枚举的真正缺点。

每次遇到此类问题时,我都会尝试以下两种解决方案:

  1. 添加命名空间来保护它们。

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

于 2013-05-17T00:41:05.010 回答