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

2024-10-21 09:14:00
admin
原创
161
摘要:问题描述:我尝试将 vscode 与 arduino 结合使用,但没有成功。问题似乎出在库路径上。但我无法解决这个问题!我在 Linux 上。“message”:“检测到#include 错误。请更新您的 includePath。此翻译单元 (/home/harold/Arduino/Saaf_Curing/...

问题描述:

我尝试将 vscode 与 arduino 结合使用,但没有成功。问题似乎出在库路径上。但我无法解决这个问题!我在 Linux 上。

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

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

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


解决方案 1:

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

什么是 includePath?

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

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

告诉VSCode(特别是C/C++ 扩展includePath的 IntelliSense 组件)在解析指令时要查看的位置。这允许 VSCode 查看这些文件中定义的符号的定义。#include "filename"

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

首先不是!在更改包含路径之前,如果还没有这样做,请先设置“编译器路径”以指向您的 C/C++ 编译器,并设置“IntelliSense 模式”以尽可能匹配编译器。

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

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

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

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

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

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

现在根据需要调整 includePath

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

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

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

解决方案 2:

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

将缺失的行添加到 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" ]以使串行类与智能感知一起工作

解决方案 3:

尝试使用 platformIO 扩展,它会让你的生活更轻松。我个人将 VScode 与 platformIO 结合使用,用于我的 Arduino 和 ESP32 项目。

解决方案 4:

我刚刚在 stack overflow 上花了一个小时才找到这个问题的解决方案,但都是徒劳的,现在我找到了解决方案,如果你使用的是 linux,只需要从你的终端安装 g++ 编译器,

sudo apt 安装 g++

“您就可以出发了。

解决方案 5:

对于使用WSL 的用户来说,这是一个常见错误,解决方法如下:

  • 安装Remote-WSLVS-Code 扩展

  • 设置c_cpp_properties.json includePath["${workspaceFolder}/**"]intelliSenseMode"linux-clang-x64"(或其他智能感知模式)

  • 关闭 VS-Code 并从 WSL 终端再次打开它,你会看到屏幕截图中的状态栏图标

现在#include错误应该消失了

更多信息请点击链接

解决方案 6:

我遇到了同样的问题,花了几个小时尝试不同的解决方案,最后我意识到我在“iostream”中拼写错误。这不是这个问题的答案,但如果你遇到同样的错误,也请检查拼写。

解决方案 7:

问题原因:

我的 C/C++ 编译器已保存,/use/bin/clang并且我的计算机中显示了错误。

操作系统:Ubuntu 2022.04

解决方案:

  1. 打开您的 VSCode 并单击设置(通常在左下角)。

  2. 现在单击打开设置(JSON)图标(在右上角)并打开文件json

  3. {}在主括号的最后一部分之间添加以下代码[如果没有括号,则创建一个]

  "C_Cpp.default.compilerPath": "/usr/bin/gcc",
  "C_Cpp.default.intelliSenseMode": "linux-gcc-x64",

这解决了我的问题,并且我认为它也能解决任何 Linux/Unix 操作系统的问题。

如果这不起作用,请尝试:

  "C_Cpp.default.compilerPath": "/usr/bin/g++",
  "C_Cpp.default.intelliSenseMode": "linux-gcc-x64",

如果您有 Windows 操作系统,那么请使用 GCC 编译器的路径而不是/usr/bin/gcc[这将类似于C:MinGWin]。

解决方案 8:

就我而言,这是因为我includePath已设置为{workspaceFolder}/**但尚未实际创建工作区。使用“将工作区另存为”创建一个项目工作区,然后它应该可以工作

解决方案 9:

该问题来自 C/C++ Runner Extension。C/C++ Runner Extension 在“c_cpp_properties.json”中通过 Arduino 会话生成配置会话。

解决方案:

  1. 从工作区禁用 C/C++ Runner Extension。(如果安装了 C/C++ Runner Extension 并在全局或工作区中启用)。切勿全局启用 C/C++ Runner。

  2. 重新加载 vscode。

  3. 从 .vscode 文件夹中删除“launch.json”、“settings.json”和“c_cpp_properties.json”。

  4. 重建您的 IntelliSense 配置运行“Ctrl+Alt+I”。

完成上述所有步骤后:

您将看到名为“Arduino”的配置会话显示在“c_cpp_properties.json”中,并且所有错误#include.. 将不再显示。

每次添加新的#include 后,您都需要重建 IntelliSense 配置(运行“Ctrl+Alt+I”)。

我的 Arduino-Vscode:v0.6.230727001。

我的 C/C++:v1.19.1。

操作系统:Kubuntu 23.10

是的,都是预览版。

相关推荐
  为什么项目管理通常仍然耗时且低效?您是否还在反复更新电子表格、淹没在便利贴中并参加每周更新会议?这确实是耗费时间和精力。借助软件工具的帮助,您可以一目了然地全面了解您的项目。如今,国内外有足够多优秀的项目管理软件可以帮助您掌控每个项目。什么是项目管理软件?项目管理软件是广泛行业用于项目规划、资源分配和调度的软件。它使项...
项目管理软件   601  
  华为IPD与传统研发模式的8大差异在快速变化的商业环境中,产品研发模式的选择直接决定了企业的市场响应速度和竞争力。华为作为全球领先的通信技术解决方案供应商,其成功在很大程度上得益于对产品研发模式的持续创新。华为引入并深度定制的集成产品开发(IPD)体系,相较于传统的研发模式,展现出了显著的差异和优势。本文将详细探讨华为...
IPD流程是谁发明的   7  
  如何通过IPD流程缩短产品上市时间?在快速变化的市场环境中,产品上市时间成为企业竞争力的关键因素之一。集成产品开发(IPD, Integrated Product Development)作为一种先进的产品研发管理方法,通过其结构化的流程设计和跨部门协作机制,显著缩短了产品上市时间,提高了市场响应速度。本文将深入探讨如...
华为IPD流程   9  
  在项目管理领域,IPD(Integrated Product Development,集成产品开发)流程图是连接创意、设计与市场成功的桥梁。它不仅是一个视觉工具,更是一种战略思维方式的体现,帮助团队高效协同,确保产品按时、按质、按量推向市场。尽管IPD流程图可能初看之下显得错综复杂,但只需掌握几个关键点,你便能轻松驾驭...
IPD开发流程管理   8  
  在项目管理领域,集成产品开发(IPD)流程被视为提升产品上市速度、增强团队协作与创新能力的重要工具。然而,尽管IPD流程拥有诸多优势,其实施过程中仍可能遭遇多种挑战,导致项目失败。本文旨在深入探讨八个常见的IPD流程失败原因,并提出相应的解决方法,以帮助项目管理者规避风险,确保项目成功。缺乏明确的项目目标与战略对齐IP...
IPD流程图   8  
热门文章
项目管理软件有哪些?
云禅道AD
禅道项目管理软件

云端的项目管理软件

尊享禅道项目软件收费版功能

无需维护,随时随地协同办公

内置subversion和git源码管理

每天备份,随时转为私有部署

免费试用