c++ - 包含 windows.h 会导致与局部变量名称发生冲突

标签 c++ windows visual-studio

我在 Visual-Studio 项目中的一个 h 文件中包含 windows.h(以便使用 CaptureStackBackTrace)。起初我遇到了一些编译器错误,因为在 windows.h 中使用了最小/最大标准方法和同名宏,但这似乎可以通过 #define NOMINMAX,正如我在其他 SO 帖子中所读到的。 (我说“似乎”是因为在我的整个项目再次构建正常之前我无法确定)。

问题是一些局部变量名称现在破坏了构建。线路:

int grp1;

在类方法内部,导致以下错误:

error C2143: syntax error : missing ';' before 'constant'

如果我将变量名称更改为 grp1_,则 cpp 文件编译正常。

当然我可以只更改变量名,但我还是觉得我做错了什么 - 是吗?或者这是包含 windows.h 时的已知问题?除了更改变量名之外,还有其他更优雅的解决方案吗?

最佳答案

dlg.h 包含行

#define grp1        0x0430

您可以通过定义 WIN32_LEAN_AND_MEAN 来排除它。

关于c++ - 包含 windows.h 会导致与局部变量名称发生冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6678820/

相关文章:

c++ - Flutter/Dart FFI 从 C++ 部分异步调用 Dart 方法

c++ - 使用 Code::Blocks 对类方法的 undefined reference

windows - x86 程序参数位置

visual-studio - VS2010代码分析。抑制消息 CA1051 :DoNotDeclareVisibleInstanceFields for all class members

visual-studio - 你见过最好的vs2008主题是什么

c++ - 在 OO 中创建一个窗口

c++ - 将字符串插入 JSON 模板

windows - Windows 7 上的 DataSnapXE2 正常断开连接

c - 如何测试我的应用程序是否兼容 UNICODE?

.net - Visual Studio 2008 和 Windows 7 呈现文本的方式不同