VS Code给出Arduino的标题错误?缺少官方标题?

seb*_*ock 6 arduino arduino-uno visual-studio-code

我最近开始为Arduino开发。最初,我使用Arduino IDE,但很快就意识到它没有达到标准。由于不时需要重新启动IDE,因此开发速度大大降低。我找到了我喜欢的Arduino扩展与VS Code。但是我有几个问题,我不确定如何解决。

首先,vs代码引发#include错误,并要求我更新IntelliSense。但是,它可以构建/上载并完美运行,还可以找到在include中定义的类等,因此在某种程度上看起来像是误报(例如,路径包含在includePath设置中)。读取错误消息还表明,查找在Arduino.h中引用的名为“ avr / pgmspace.h”的标头存在问题。我不确定这些错误是否相关。pgmspace.h在任何地方都找不到(它应该已经包含在Arduino SDK中)。

最后,由于#include错误,与该特定头文件有关的所有内容均不会正确突出显示,而只是纯灰色文本,这有点令人讨厌。

有人知道如何解决这个问题吗?我在Mac上。

错误讯息

Vit*_*tox 6

接受的答案对我不起作用。找不到或创建 c_cpp_properties.json 文件。另外,我希望它是全局的,而不仅仅是一个项目/工作区/文件夹。

因此,对于 VSCode 1.14 (2019),我只需导航到 settings.json (全局的),然后添加以下 json 部分:

"C_Cpp.default.includePath": [
    "C:/Program Files (x86)/Arduino/libraries/**",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino/**",
    "C:/Program Files (x86)/Arduino/hardware/tools/avr/avr/include/**",
    "C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include/**",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard/**",
    "C:/Users/<YOUR USERNAME>/.platformio/packages/framework-arduinoavr/**",
    "C:/Users/<YOUR USERNAME>/Documents/Arduino/libraries/**",
    "{$workspaceFolder}/libraries/**",
    "{$workspaceFolder}/**"
],
"C_Cpp.intelliSenseEngine": "Tag Parser"
Run Code Online (Sandbox Code Playgroud)

发布了另一个答案,其中包含整个过程以及有关该方法的所有详细信息:Visual Studio Code includePath


Joe*_*ski 5

更新:不需要安装其他库。IntelliSense只能使用Arduino应用程序安装的标头进行操作,但其他一些方法可能会有所帮助。下面有更多更新。

VSCode构建时,将使用SDK。但是,IntelliSense无法读取SDK文件进行操作(据我所知),这会引发这些烦人的错误并消除大多数代码完成功能。

双方includePathbrowse.path需要进行配置。includePath不包括递归(但该功能似乎即将推出)。browse.path是递归的,但是includePath对于IntelliSense功能,仍然必须包含头文件的确切位置。browse.path将使用Tag Parser提供诸如“灯泡”之类的工具,您可以单击这些工具来帮助解决includePath问题。(来源:c_cpp_properties.json中的“ includePath”和“ browse.path”之间有什么区别?


苹果电脑:

avr/pgmspace.h位于:/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include/avr/pgmspace.h。它编码为avr/pgmspace.h; 因此,我们需要包含其所在的路径avr

1. 安装homebrew-avr

2.编辑c_cpp_properties.json:

"includePath": [
    "${workspaceFolder}/libraries",
    "/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
    "/Applications/Arduino.app/Contents/Java/libraries",
    "/Applications/Arduino.app/Contents/Java/hardware/tools/avr/avr/include",
    "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/variants/standard"
],
"browse": {
    "limitSymbolsToIncludedHeaders": false,
    "path": [
        "/System/Library/Frameworks/Kernel.framework/Versions/A/Headers",
        "/Applications/Arduino.app/Contents/Java/"
    ]
},
"forcedInclude": [
    "/Applications/Arduino.app/Contents/Java/hardware/arduino/avr/cores/arduino/Arduino.h"
],
Run Code Online (Sandbox Code Playgroud)

Windows 10:

1. 安装WinAVR

2.编辑c_cpp_properties.json:

修改includePath如下:

"includePath": [
    "{$workspaceFolder}/libraries",
    "C:/Program Files (x86)/Arduino/hardware/tools/avr/lib/gcc/avr/5.4.0/include",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/cores/arduino",
    "C:/Program Files (x86)/Arduino/hardware/arduino/avr/variants/standard",
    "C:/Program Files (x86)/Arduino",
],
Run Code Online (Sandbox Code Playgroud)

替代方法(可能是个坏主意):

如果可以获得任何缺少的库的版本,则可以将include 放入libraries项目的文件夹中。确保适当地命名库的名称空间,例如。我尚未测试此方法。includePath"${workspaceFolder}/libraries"libraries/avr/pgmspace.h


更新:

  • 从home.path更改为includePath。在此处查看更多信息:vscode-cpptools / FAQ
  • vscode-arduino在Windows 10上不需要库下载的工具。
  • 更改了Windows配置路径,以使用正斜杠而不是转义的反斜杠。

来源和其他技巧:使用Visual Studio Code启用Arduino Intellisense