vscode "#检测到include错误。请更新你的includePath

问题描述 投票:0回答:1

我试图用vscode与arduino一起使用,但没有成功.问题似乎是库路径的问题。但我一直没能解决这个问题!我是在Linux上。

"message": "#include errors detected. Please update your includePath. IntelliSense features for this translation unit (/home/harold/Arduino/Saaf_Curing/Saaf_Curing.ino) will be provided by the Tag Parser.",

我不知道如何找到我的includePath.我不能做任何vscode中给出的建议。

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

c++ visual-studio-code unreal-engine4
1个回答
6
投票

虽然这个问题提到了Arduino,但以下建议基本上适用于VSCode告诉你 "更新你的includePath "的任何时候。

什么是includePath?

在这个问题上,我的建议是,在VSCode告诉你 "更新你的includePath "的时候,以下建议基本适用。includePath 中的一个属性。c_cpp_settings.json,它是在 .vscode 您在VSCode中使用文件→打开文件夹打开的主文件夹的文件夹。

您可以编辑 c_cpp_settings.json 直接使用,但通常使用 "CC++配置GUI "更容易。 要做到这一点,打开命令调色板(Ctrl+Shift+P)并运行 "CC++: Edit Configurations (UI)"。 然后寻找 "Include path "设置。

列表中的 includePath 告诉VSCode(特别是IntelliSense组件的 CC++扩展)在解决 #include "filename" 指令。 这样VSCode就可以看到这些文件中定义的符号的定义。

那么,当VSCode告诉我这样做时,我是否应该摆弄includePath呢?

一开始不应该! 在改变包含路径之前,如果你还没有改变,首先将 "编译器路径 "设置为指向你的CC++编译器,并将 "IntelliSense模式 "设置为尽可能与编译器匹配。

你可能还需要调整 "编译器参数",特别是当编译器能够生成多个目标的代码时,例如,同时生成32位和64位代码。 如果你不知道这意味着什么,一开始就跳过它)。

接下来,在命令调色板中,运行 "CC++: Log Diagnostics". 输出将向你展示VSCode发现了哪个编译器,以及它检测到的内置包含路径和预处理器定义。

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

  $ touch empty.c
  $ gcc -v -E -dD empty.c

这里,我假设你使用的是 gcc 作为你的编译器。 如果不是,请用实际的编译器命令名代替。 如果你的编译器不是由 海湾合作委员会 (例如您使用的是微软的 cl.exe 编译器),你需要查看它的文档或谷歌来找到打印预定义宏和包含路径的开关(例如,见 此处 对于 cl.exe).

将上述命令的输出与VSCode在其CC++诊断输出中显示的内容进行比较。 希望它们非常相似。 如果不是,请尝试调整编译器路径、IntelliSense模式或编译器参数。 一旦你通过调整这三个设置让它们尽可能地接近,就可以继续下一步了。

如果有必要,现在调整includePath

如果编译器内置的配置和VSCode检测到的配置之间仍然存在显著差异,请通过(在CC++设置UI中)修改Include路径、Defines和CC++标准字段来修复。 重新运行CC++日志诊断命令看看效果。

可能没有必要添加所有的预定义预处理器符号。 这实际上只在有 #ifdef 指令,并导致VSCode将错误的代码视为活动代码。 我建议只有在浏览你的代码时,看到VSCode会出错的特定情况下,才添加预定义符号。

最后,如果你的项目在编译器默认不搜索的地方有头文件,也就是说,你通常要通过 -I 开关,把它们也添加到Include路径中。 同样的道理也适用于任何 -D 参数,这些参数必须添加到Defines中。


1
投票

这是由于扩展在初始化时缺少了一些includepath

在你的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"
]

同时增加 "defines": [ "USBCON" ] 在 "配置 "下,使Serial类与intellisense一起工作。

© www.soinside.com 2019 - 2024. All rights reserved.