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

VScode for stm32 消除中文数组警告

在用VScode 开发stm32的时候,有些场景下不得不用GB2312编码格式的c文件,如采用液晶中文字库等。常规的UTF-8格式下,一个中文字符占用3个字节,而GB2312是占用2字节的,为能让字库正常识别中文,不得不定义中文数组,编译的时候就是一堆警告。 如果想让 VS Code 的智能感知也识别这些参数(避免编辑器标红),同时方便一键编译,可修改c_cpp_properties.jsontasks.json

解决方法:

1》修改tasks.json(一键编译用)

  • 按 Ctrl+Shift+P → 输入Tasks: Configure Task→ 选择Create tasks.json file from template→ 选择Others

  • 修改生成的tasks.json,添加编译参数:

  • { // See https://go.microsoft.com/fwlink/?LinkId=733558 // for the documentation about the tasks.json format "version": "2.0.0", "tasks": [ { "label": "echo", "type": "shell", "command": "echo Hello" }, { // 任务名称,自定义(比如 "编译menu_fun.c") "label": "build-menu-fun", "type": "shell", // 编译器路径(根据你的实际路径修改,嵌入式替换为 arm-none-eabi-gcc) "command": "arm-none-eabi-gcc", // 嵌入式编译器 "args": [ // 输出可执行文件名称(比如生成 menu_fun.exe) "-o", "${fileDirname}/App/OLED/menu_fun", // 要编译的文件:当前目录下的 menu_fun.c "${fileDirname}/App/OLED/menu_fun.c", // 核心:适配 GB2312 中文编码 "-finput-charset=GB2312", "-fexec-charset=GB2312", // 屏蔽中文数组触发的警告 "-Wno-multichar", // 可选:屏蔽其他可能的中文相关警告 "-Wno-implicit-int", "-Wno-unused-variable" ], // 设置为默认构建任务(按 Ctrl+Shift+B 可直接执行) "group": { "kind": "build", "isDefault": true }, // 识别 GCC 编译错误/警告 "problemMatcher": ["$gcc"], // 任务描述(可选) "detail": "编译 menu_fun.c(适配 GB2312 中文编码,屏蔽多字符警告)" } ] }

    示例中仅屏蔽了根目录/APP/OLED/menu_func.c,如有其他文件可依样添加。

2》修改c_cpp_properties.json(语法检查用)

tasks.json只负责编译,编辑器语法检查需单独配置c_cpp_properties.json,格式如下

{ "configurations": [ { "name": "Win32", // 或 "ARM-GCC"(嵌入式) "includePath": ["${workspaceFolder}/**"], "defines": [], "compilerPath": "C:/MinGW/bin/gcc.exe", // 你的 GCC 路径 "cStandard": "c17", "cppStandard": "c++17", "intelliSenseMode": "gcc-x64", // 核心:添加编码和警告参数 "compilerArgs": [ "-finput-charset=GB2312", "-fexec-charset=GB2312", "-Wno-multichar" ] } ], "version": 4 }

3》验证是否生效

编译完成后,可通过以下方式验证参数是否生效:

  1. 编译时无「multi-character character constant」「illegal character encoding」等警告;

  2. 运行生成的可执行文件,中文字符能正常显示(无乱码);

  3. 若用嵌入式编译器,可通过arm-none-eabi-objdump -s test.elf查看字符串段,中文字符的十六进制值符合 GB2312 编码(如「中」是 0xD6 0xD0)。

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

相关文章:

  • 文旅元宇宙AI应用:AI+虚拟文物的复原与交互架构
  • 裂纹剥落齿轮时变啮合刚度与动力学【附代码】
  • 60天自我松绑:一个“被困住”成长者的破局宣言
  • Spring MVC 响应机制综合实践:页面、数据、JSON 与响应配置
  • java Date转换为string
  • 看清不要什么:60天松绑第二步——用“反愿景”照见你的隐形牢笼与停滞沼泽
  • 如何甄别一家靠谱的背调公司?
  • SimpleDateFormat 为什么线程不安全
  • 【Rust开发】Rust基础语法详细解析,助力你快速通关Rust
  • 性能优化:类型系统的最佳实践
  • 设计模式在 TypeScript 中的实现
  • 2026年1月线切割机床厂家推荐排行榜,中走丝/快走丝/电火花线切割机床,穿孔机,精密高效加工设备源头厂商精选
  • C盘爆红怎么办!几招彻底清理电脑C盘空间
  • 研发需求排期实战指南:工具选型、流程搭建与效能提升
  • 聊聊AI智能客服
  • 破解协作低效难题:中小企业流程数字化工具及核心策略
  • 测试用例执行进度实时同步工具指南:从流程打通到效率提效的全链路落地
  • 【无人机追踪】基于资源福利任务分配算法的无人机集群任务分配算法,完成目标攻击任务的基础上,无人机的资源利用率最大化 + 资源损耗的公平性最优附Matlab代码2
  • 2026年铝板厂家推荐排行榜:幕墙铝板、氟碳铝板、木纹铝板、蜂窝铝板、异型铝板等全品类实力厂家深度解析与选购指南
  • RAG 不是万能解,这些场景你一开始就不该用
  • 零基础想转行网络安全?这3个方向门槛低、就业快
  • 运维人别内耗!转行网安,薪资翻倍+职业逆袭指南
  • 2026网络安全这趟车_你还敢上吗?
  • 2026年,还能继续入网络安全行业吗?那些行业不敢说的秘密
  • 普通本科转行网络安全5年,现在月薪2W+,劝你想清楚!
  • IP6163至为芯支持MPPT功能的太阳能电池板充电DC-DC芯片
  • 轨道小车无线控制系统设计与实现
  • 【图像加密】基于DCT变换的图像加密与解密附matlab代码
  • 2026年想给Facebook广告账户充值,到底该找谁?这里有一份详细的避坑指南
  • 144. 二叉树的前序遍历-day11