c++ - 我如何找到 C++ 编译器认为定义为常量的内容?

标签 c++ enums namespaces literals

我在尝试构建我的应用程序时报告了以下错误:

  • 错误 C2143:语法错误:在“常量”之前缺少“}”
  • 错误 C2143:语法错误:缺少“;”在“常量”之前
  • 错误 C2059:语法错误:“常量”

对于下面的代码:

namespace oP
{
      enum adjustment
      {
         AUTO_OFF,
         AUTO_ONCE,
         AUTO_CONTINUOUS,
         AUTO_SEMI,
         ABSOLUTE,        // The line that the errors point to.
         NUDGE
      };
}

小写的“absolute”可以正常构建,如果我拼错了 ABSOLUTE,那么它可以正常构建。

我搜索了我的整个代码库,没有其他地方使用术语“绝对”。 我调查了没有此更改的构建工件,但我在其中找不到任何对 ABSOLUTE 的引用。

有没有人指出问题出在哪里或如何调试?

谢谢

最佳答案

ABSOLUTE#define d(到数字 1)在一个 Windows API header 中 <windi.h> .这就是让编译器感到困惑的地方。

你可以 #undef它,删除<windows.h>如果您不需要它,或者重命名您的枚举。

关于c++ - 我如何找到 C++ 编译器认为定义为常量的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31116086/

相关文章:

c++ - 诺基亚N95可以编译运行C/C++程序吗?

c++ - 在 OpenCV 中处理大图像

c++ - 如何克服大量生成代码导致的编译时间过长?

c++ - C2084 - 函数已经有主体

c++ - 整数常量太大以至于在将最大类型值分配给枚举时它是无符号的

delphi - 最小枚举大小在 Delphi 中不起作用

java - 使用 gson 反序列化 EnumMap

r - 如何在尚未导出的 R 包中使用函数?

c++ - 使用命名空间的区别 (std::vs::std::)

c# - 找不到类型或命名空间(但应该是!)