当前位置: 首页 > news >正文

vscode里使用EIDE,编译GD32,如何屏蔽官方库的C语言代码警告提示(非错误)

修改已完成。下面是完整总结:


一、修改了哪些文件,改了什么内容

文件 1:.eide/files.options.yml

作用:armclang 编译器在编译官方外设库的.c文件时,不产生任何警告。

改动:

files:'Firmware/GD32E23x_standard_peripheral/**/*.c':--wvirtualPathFiles:'Peripherals/**/*':--w
  • files是按实际磁盘路径匹配,对应Firmware/GD32E23x_standard_peripheral/下的所有.c源文件。
  • virtualPathFiles是按eide 项目视图里的虚拟文件夹匹配,Peripherals正好就是官方外设库在 eide 里的显示名称。
  • -w= 关闭该文件的全部编译警告。

文件 2:.clangd

作用:clangd 语言服务器(VS Code 里代码下划线、Problems 面板提示)在分析官方外设库文件时,静默所有诊断。

改动:在原配置末尾追加了两段路径条件配置

---If:PathMatch:Firmware/GD32E23x_standard_peripheral/.*\nCompileFlags:Add:[-w]---If:PathMatch:Firmware/GD32E23x_standard_peripheral/.*\nDiagnostics:Suppress:[.*]
  • 第一段:追加编译选项-w,抑制编译器类型的诊断(如expanded from macro)。
  • 第二段:Suppress: [.*],抑制 clangd 自身特有的诊断(如unused-includes-Wshadow-header等)。
  • PathMatch确保这两段只对官方外设库生效,你自己写的代码完全不受影响。

二、以后要添加其它官方文件/目录,怎么弄

场景 A:新增一个官方库目录(比如以后用了Firmware/GD32E23x_usbd_driver

.eide/files.options.yml
files:virtualPathFiles:里各加一行:

files:'Firmware/GD32E23x_standard_peripheral/**/*.c':--w# 新增官方库'Firmware/GD32E23x_usbd_driver/**/*.c':--wvirtualPathFiles:'Peripherals/**/*':--w# 新增官方库(假设你在 eide 里把它虚拟文件夹命名为 USBD)'USBD/**/*':--w

.clangd
把原来的PathMatch改成用|分隔的多条路径:

---If:PathMatch:Firmware/GD32E23x_standard_peripheral/.*|Firmware/GD32E23x_usbd_driver/.*CompileFlags:Add:[-w]---If:PathMatch:Firmware/GD32E23x_standard_peripheral/.*|Firmware/GD32E23x_usbd_driver/.*Diagnostics:Suppress:[.*]

场景 B:偷懒一把,直接屏蔽所有Firmware/Utilities/下的官方文件

如果你以后懒得逐个加,可以把匹配范围写宽:

.eide/files.options.yml

files:'Firmware/**/*.c':--w'Utilities/**/*.c':--w

.clangd

---If:PathMatch:Firmware/.*|Utilities/.*CompileFlags:Add:[-w]---If:PathMatch:Firmware/.*|Utilities/.*Diagnostics:Suppress:[.*]

这样Firmware(包含 CMSIS + 所有外设库)和Utilities里的所有官方文件都会被忽略。


三、改完后的生效步骤

  1. 重新编译项目(触发 armclang 读取新的files.options.yml)。
  2. 重启 clangd:按Ctrl+Shift+P→ 输入C/C++: Restart IntelliSense for Active File,或者重启 VS Code
    这一步是让 clangd 重新加载.clangd配置文件。

做完后,官方外设库相关的报错/警告就会从 Problems 面板和代码编辑器里彻底消失。

对的,-w只屏蔽警告(Warning),不会屏蔽错误(Error)


四、具体说明

级别VS Code Severity是否会被-w屏蔽
Error1不会,编译照样失败
Warning2会屏蔽
Information / Hint3~4会屏蔽

你提供的那些诊断:

"severity":2,// Warning 级别"message":"expanded from macro 'GPIO_BOP'"
"code":"-Wunsafe-buffer-usage",// 带 -W 前缀的就是 Warning"severity":4
  • severity: 2= Warning
  • -Wunsafe-buffer-usage-Wunused-parameter-Wshadow-header= 这些都是Warning
  • unused-includes= clangd 的提示信息(Hint)

它们都不是 Error。所以如果官方库真的有语法错误、缺少分号、未定义符号等问题,-w不会帮你掩盖,编译器照样会报错,编译照样会失败。


一句话总结

错误(Error)照常显示,编译遇到错误照样停;只有烦人的警告(Warning)和提示(Hint)被静默掉。

http://www.jsqmd.com/news/856397/

相关文章:

  • 驭势科技上市首日破发,L4级自动驾驶商业化盈利之路仍待突破
  • 英语阅读_The bitter taste of climate change
  • 保姆级教程:用Docker Compose一键部署PostgreSQL 14,再也不用记那些繁琐的docker run命令了
  • 从元计算到舱驾融合:国产AI芯片五大技术路线横向观察
  • 极竞魔方XR大空间亮相孩子王南京城市亲子节
  • 保姆级教程:在Ubuntu 22.04上搞定MySQL 8.0安装、用户权限与远程连接(避坑指南)
  • 利刃混剪:告别重复劳动:用脚本思维搞定剪映批量混剪(实战分享)
  • GJB/Z 299D-2024 可靠性预计工具 —— 国产自主可控的电子设备可靠性评估利
  • 保姆级教程:用ROS2的Component机制和TF2实现小乌龟跟随(C++/Python双版本)
  • 以太网自动协商:让网络设备“握手”的隐形功臣
  • 生成式搜索生态下品牌数字化增长选型体系
  • Play Integrity API Checker:终极Android设备完整性检测工具指南
  • 别再死记硬背了!用这5个HBase Shell实战场景,轻松搞定日常数据操作
  • 多目摄像头时间同步实战:用FSYNC信号搞定树莓派+双OV5640的同步曝光
  • 开源之魂:Thunderbird 的生存困境与我们的数字主权
  • 第一次投学术会议?这份全流程指南请收好
  • STM32F103标准库硬件IIC+DMA驱动AHT20温湿度传感器(附完整工程代码)
  • 视频处理从未如此简单:12个纯前端视频工具,免下载免上传
  • 导师推荐!盘点2026年全网爆红的的降AI率软件
  • 实时仿真软件SimuRTS
  • 大疆智图+B3DM切片+Cesium:手把手教你将实景三维模型搬上Web地图
  • 别再死记硬背了!用Python+SymPy玩转含参积分,从卷积到信号处理一次搞懂
  • 光猫不改桥接,用Docker版ddns-go搞定群晖IPv6外网访问(保姆级避坑指南)
  • CISA备考|完整时间规划 + 每日安排(上班族直接照抄)
  • 给 AI Agent 写一份 Action Manifest:让工具调用从“能跑”变成“可控”
  • ROS2 Foxy下,六轴IMU串口数据解析与Rviz2可视化实战(避坑串口驱动与协议)
  • 从YOLOv5实战反推:手把手在WSL2里搭建PyTorch 1.12 + CUDA 11.3 环境(附国内镜像加速)
  • 一线观察:昆明装修供应商长期使用的真实表现
  • 从‘权限不足’到‘读写自由’:一个MongoDB用户权限的完整调试日记
  • 焊接生产线气耗高的技术解决方案