代码中时有HAL库宏定义出现未定义标识却能正常跳转的报错,但后面发现这种报错跳转后都是在#ifdef
的宏开关的灰色区域中,说明包含关系有误
具体原因有两个:
-
vscode 插件 c/c++ 插件未找到定义该标识符的头文件
-
stm32 hal 库中的兼容性代码使得 vscode 未找到要包含的相关头文件
-
解决问题一
修改c_cpp_properties.json
例如使用的是STM32F407IGHX 使用了HAL库 那就添加
"defines": [ "USE_HAL_DRIVER", "STM32F407IGHX", "__CC_ARM" ]
也可以直接在插件中修改配置
按ctrl+shlft+p 搜C/C++: 编辑配置(UI)
找到编译器路径,选择正确安装路径
找到IntelliSense 模式,选择gcc -arm
-
解决问题二
在stm32f4xx.h文件中修改(在Driver/CMSIS/Include文件夹中)
这块注释需要自己去除,根据自己使用板子的型号去除对应的宏定义
如果刚刚在扩展处尝试改配置不成功的话,这块注释也需要自己去除一下
全部操作完后再看这些宏定义就不报错啦