vscode“检测到#include 错误。请更新您的includePath

har*_*old 15 linux arduino include-path visual-studio-code

我正在尝试将 vscode 与 arduino 一起使用,但没有成功。问题似乎与库路径有关。但我一直无法解决这个问题!我在 linux 上。

"message": "#include 检测到错误。请更新您的 includePath。此翻译单元 (/home/harold/Arduino/Saaf_Curing/Saaf_Curing.ino) 的智能感知功能将由标签解析器提供。",

我不知道如何找到我的 includePath。我无法执行 vscode 中给出的任何建议。

我想知道 vs 代码是否是正确的方向,因为它看起来很复杂?

Sco*_*eak 19

尽管问题提到了 Arduino,但以下建议基本上适用于 VSCode 告诉您“更新您的 includePath”的任何时候。

什么是包含路径?

includePath是一个属性 in c_cpp_settings.json,它位于.vscode您在 VSCode 中使用 File 打开的主文件夹的文件夹中?打开文件夹。

您可以c_cpp_settings.json直接编辑,但通常使用“C/C++ 配置 GUI”更容易。为此,请打开命令面板 (Ctrl+Shift+P) 并运行“C/C++:编辑配置 (UI)”。然后查找“包含路径”设置。

includePath讲述VSCode(具体的智能感知成分的C / C ++扩展)其中解决当看#include "filename"指令。这允许 VSCode 查看这些文件中定义的符号的定义。

那么当 VSCode 告诉我时,我应该摆弄 includePath 吗?

一开始不是!在更改包含路径之前,如果您还没有,首先将“编译器路径”设置为指向您的 C/C++ 编译器,并设置“智能感知模式”以尽可能匹配编译器。

您可能还需要调整 Compiler 参数,特别是如果编译器能够为多个目标生成代码,例如 32 位和 64 位代码。(如果您不知道那是什么意思,请先跳过它。)

接下来,在命令面板中,运行“C/C++:日志诊断”。输出将显示 VSCode 找到的编译器以及它检测到的内置包含路径和预处理器定义的内容。

然后,在 shell 中运行这些命令:

  $ touch empty.c
  $ gcc -v -E -dD empty.c
Run Code Online (Sandbox Code Playgroud)

在这里,我假设您将其gcc用作编译器。如果不是,请替换实际的编译器命令名称。如果您的编译器不是GCC的变体(例如,您使用的是 Microsoftcl.exe编译器),您将需要查看其文档或 Google 以查找打印预定义宏和包含路径的开关(例如,请参阅此处的参考资料cl.exe)。

将上述命令的输出与 VSCode 在其 C/C++ 诊断输出中显示的内容进行比较。希望它们非常相似。如果没有,请尝试调整编译器路径、智能感知模式或编译器参数。通过仅调整这三个设置使它们尽可能接近后,继续下一步。

现在根据需要调整 includePath

如果编译器内置配置与 VSCode 检测到的内容之间仍然存在显着差异,请通过(在 C/C++ 设置 UI 中)修改包含路径、定义和 C/C++ 标准字段来解决该问题。重新运行 C/C++ 日志诊断命令以查看效果。

可能没有必要添加所有预定义的预处理器符号。只有当存在#ifdef依赖于它们的指令并且导致 VSCode 将错误代码视为活动的指令时,这才真正重要。如果在浏览代码时看到 VSCode 出错的特定情况,我建议仅添加预定义的符号。

最后,如果您的项目在编译器默认不搜索的地方有头文件,也就是说,您通常必须-I在编译器命令行上传递开关,请将它们也添加到包含路径中。对于-D必须添加到定义中的任何参数也是如此。

  • 查看 /sf/ask/3190843141/Detected-in-vscode 时发现了这一点解决了我的问题,谢谢! (2认同)

小智 6

这是由于扩展在初始化时缺少一些包含路径

将缺少的行添加到 c_cpp_properties.json 中

"includePath": [
"<arduino ide installation folder>\\tools\\**",
"<arduino ide installation folder>\\hardware\\arduino\\avr\\**",
"<arduino ide installation folder>\\hardware\\tools\\**",
"<arduino ide installation folder>\\hardware\\arduino\\avr\\cores\\arduino"
]
Run Code Online (Sandbox Code Playgroud)

还要在“配置”下添加"defines": [ "USBCON" ]以使串行类与智能感知一起使用