为啥 Arduino Intellisense 不能在 VSCode 中工作?

Posted

技术标签:

【中文标题】为啥 Arduino Intellisense 不能在 VSCode 中工作?【英文标题】:Why Won't Arduino Intellisense Work in VSCode?为什么 Arduino Intellisense 不能在 VSCode 中工作? 【发布时间】:2018-07-31 13:43:44 【问题描述】:

我在 VSCode 中安装了 Arduino 扩展 Arduino extension,它应该包含智能感知,但它似乎不起作用。这是我的 c_cpp_properties.json:

以下是智能感知不起作用的示例:

如您所见,intellisense 应该能够预测关键字 Serial,但事实并非如此。

我安装了命令行工具。我应该在“includePath”属性中包含一个缺少的目录吗?

【问题讨论】:

【参考方案1】:

将缺少的行添加到您的 c_cpp_properties.json 中(并将一些文件名更改为 mac 等效项) 尤其是与"defines": [ "USBCON" ] 一起使串行类与智能感知一起工作


    "configurations": [
        
            "name": "Win32",
            "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"
            ],
            "forcedInclude": [
                "<arduino ide installation folder>\\hardware\\arduino\\avr\\cores\\arduino\\Arduino.h"
            ],
            "intelliSenseMode": "msvc-x64",
            "compilerPath": "<arduino ide installation folder>\\hardware\\tools\\avr\\bin\\avr-gcc.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "defines": [
                "USBCON"
            ]
        
    ],
    "version": 4

【讨论】:

这是我使用 Arduino Uno 和 WeMos D1 R1 Mini ESP8266(2019 年 4 月)的解决方案! - “\\Arduino\\libraries\**”,对于库至关重要 - ForcedInclude 对于库来说是必不可少的 - USBCON 对于 Serial 来说是必不可少的 在我的环境中,当您使用库函数添加/安装库时,库位置由扩展处理【参考方案2】:

尝试将此路径添加到“浏览”中,如“includePath”

   "browse": 
      "limitSymbolsToIncludedHeaders": false,
      "path": [
        "arduino_install_dir/hardware/tools/avr/avr/include",
        "$workspaceRoot"
      ]
    ,

【讨论】:

以上是关于为啥 Arduino Intellisense 不能在 VSCode 中工作?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 JavaScript Intellisense 在 Visual Studio 2012 中并不总是有效?

为啥 VS Code javascript intellisense 依赖于我打开的文件?

为啥 Visual Studio 2010 (Intellisense) 会停止生成接口指针?

为啥我会收到 IntelliSense 错误,如何修复或隐藏它们?

Intellisense 说错误:成员“Class::field”无法访问,但它仍然有效?为啥?

为啥 Visual Studio 编译器无法找到某些头文件而 intellisense 可以?