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

时间:2018-07-07 23:22:31

标签: linux arduino visual-studio-code include-path

我试图将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代码是否完全正确,因为它看起来很复杂?

3 个答案:

答案 0 :(得分:1)

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

什么是includePath?

includePathc_cpp_settings.json中的一个属性,位于您在VSCode中使用文件→打开文件夹打开的主文件夹的.vscode文件夹中。

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

includePath告诉VSCode(特别是C/C++ extension的IntelliSense组件)在解析#include "filename"指令时的位置。这样,VSCode可以查看那些文件中定义的符号的定义。

所以当VSCode告诉我时,我应该摆弄includePath吗?

一开始不是!在更改包含路径之前,如果尚未设置,请首先将“编译器路径”设置为指向C / C ++编译器,然后将“ IntelliSense模式”设置为与编译器尽可能匹配。

您可能还需要调整Compiler参数,尤其是在编译器能够为多个目标生成代码的情况下,例如32位和64位代码。 (如果您不知道这是什么意思,请先跳过。)

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

然后,在shell中运行以下命令:

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

在这里,我假设您正在使用gcc作为编译器。如果不是,请替换实际的编译器命令名称。如果您的编译器不是GCC的变体(例如,您使用的是Microsoft cl.exe编译器),则需要查看其文档或Google来查找打印预定义宏并包括在内的开关路径(例如,请参见here中的cl.exe)。

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

现在如有必要,请调整includePath

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

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

最后,如果您的项目的头文件位于编译器默认不搜索的位置,也就是说,通常您必须在编译器命令行上传递-I开关,请将它们也添加到Include路径中。对于任何-D自变量,必须将其添加到“定义”中。

答案 1 :(得分:1)

尝试使用platformIO扩展,它将使您的生活更轻松。我个人将VScode与platformIO一起用于Arduino和ESP32项目。

答案 2 :(得分:0)

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

将缺少的行添加到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类可与智能感知一起使用