当我在STM32项目上编程时,VSCode不断地在代码#include "main.h"下划线,原因如下:
#包括检测到的错误。请更新您的includePath。此翻译单元禁用Squiggles。无法打开源文件“stm32f1x.h”(“main.h”的依赖性)
然而,我再次检查了我的c_cpp_properties.json,发现它没有任何问题。同时,VSCode给出了快速修复方法,将${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F1xx/Include添加到includePath参数中,这也不起作用。
胸罩是我的配置。
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_HAL_DRIVER",
"STM32F103xE"
],
"cStandard": "c17",
"cppStandard": "c++17",
"compilerPath": "C:\\Program Files (x86)\\GNU Arm Embedded Toolchain\\10 2021.07\\bin\\arm-none-eabi-gcc.exe",
"intelliSenseMode": "gcc-arm"
},
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/**"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE",
"USE_HAL_DRIVER",
"STM32F103xE"
],
"cStandard": "c17",
"cppStandard": "c++17",
"compilerPath": "/opt/ARM/gcc-arm-none-eabi-10.3-2021.10/bin/arm-none-eabi-gcc",
"intelliSenseMode": "gcc-arm"
}
],
"version": 4
}而且所需的文件/Drivers/CMSIS/Device/ST/STM32F1xx/Include/stm32f1xx.h是存在的,使用make编译也是可以正确的。
我已经多次检查这些文件,但没有发现任何问题,比如:
发布于 2021-12-08 15:28:55
您必须告诉vscode在哪里可以找到所需的所有包含文件。
向includePath添加包含文件夹时,文件夹中包含的标头可能包括其他地方的其他标头。这可能解释为什么在向includePath添加单一路径后仍然会出现错误。
使用CubeMX生成的项目通常有多个包含文件夹。
您的配置文件应该如下所示
"configurations": [
{
"name": "Linux",
"includePath": [
"${workspaceFolder}/Core/Inc/**",
"${workspaceFolder}/Drivers/STM32F0xx_HAL_Driver/Inc/**",
"${workspaceFolder}/Drivers/STM32F0xx_HAL_Driver/Inc/Legacy/**",
"${workspaceFolder}/Drivers/CMSIS/Include/**",
"${workspaceFolder}/Drivers/CMSIS/Device/ST/STM32F0xx/Include/**"
],
"defines": ["STM32F031x6","USE_HAL_DRIVER"],
"compilerPath": "path_to_compiler",
"cStandard": "gnu17",
"cppStandard": "gnu++14",
"intelliSenseMode": "linux-gcc-x64"
}
],若要查找所需的文件夹,请执行以下不同操作:
使用Makefile
如果您有一个工作的Makefile,它可能包含一个位置,其中它定义了使用的头文件,例如:
C_INCLUDES = \
-IDrivers/STM32F0xx_HAL_Driver/Inc \
-IDrivers/STM32F0xx_HAL_Driver/Inc/Legacy \
-IDrivers/CMSIS/Device/ST/STM32F0xx/Include \
-IDrivers/CMSIS/Include使用Vscode智能感知
如果缺少标题,Vscode将显示以下错误
cannot open source file "HEADER2.h" (dependency of "HEADER1.h")这意味着HEADER2.h包含在HEADER1.h中,但是includePath中没有HEADER2.h。
因此,您应该找到包含HEADER2.h的文件夹并添加它。
要做到这一点,您可以从项目的根使用find . -name "HEADER2.h"。
https://stackoverflow.com/questions/70139876
复制相似问题