【问题标题】:VSCode turn of _WIN32 defineVSCode转_WIN32定义
【发布时间】:2021-02-03 00:19:30
【问题描述】:

我在 VisualStudio 代码中有一个嵌入式项目,它在大多数情况下都可以正常工作。我的问题是总是以某种方式定义 _WIN32,这会导致某些头文件中包含错误。

我猜这个问题是 Intellisense 问题,因为项目编译没有任何错误(我使用 IAR 编译器)。只是来自 Intellisense 的错误曲线显示错误。 (例如在一个头文件中它试图打开 因为 _WIN32 定义,这显然会在具有嵌入式编译器的嵌入式项目中失败,因此 Intellisense 报告它无法打开头文件)

现在,我到目前为止尝试了什么:

  1. 更改 Intellisense 模式,但即使我将其切换到 gcc 或 clang for ARM,_WIN32 仍保持定义
  2. 试图从代码中删除 _WIN32 定义,但似乎 VSCode 在内部定义了它(如果这有意义吗?)。 我查看了this thread,他们试图回答定义 _WIN32 的问题。但这对我也没有帮助。

有谁知道为什么定义_WIN32 或在哪里定义它?我如何告诉 VisualStudio 代码/Intellisense 定义 _WIN32?

提前致谢。

【问题讨论】:

    标签: visual-studio-code compiler-errors embedded intellisense iar


    【解决方案1】:

    问题很可能是 VSCode 使用了错误的 C++ 编译器来收集预定义的宏;这可能是_WIN32 定义的来源。使用命令 Palette (Ctrl+Shift+P) 运行“C/C++:编辑配置 (UI)”,然后将“编译器路径”设置为指向您的编译器可执行文件(在本例中为 IAR)。这应该可以解决问题,因为 VSCode 然后会查询该编译器以确定预定义的宏。

    要确认修复,请在命令面板中运行“C/C++:日志诊断”。输出将显示 VSCode 找到了哪个编译器,以及它检测到的内置包含路径和预处理器定义的内容。您应该看到_WIN32 不再在其中。 (您可能想在更改任何内容之前运行它以查看差异。)

    另外,您提到了更改智能感知模式。我相信该开关的效果与 C++ 语言方言问题有关,尤其是对某些编译器中某些错误的支持。它与是否定义了任何预处理器符号无关。

    (此答案中的某些文本是从another answer of mine 复制的,其中更广泛地讨论了配置 VSCode 以模拟给定编译器。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-14
      • 1970-01-01
      • 2019-11-04
      • 1970-01-01
      • 2011-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多