news 2026/7/30 13:26:41

为什么局部变量要放函数开头——ARMCC V5的C90约束

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为什么局部变量要放函数开头——ARMCC V5的C90约束

一句话: ARMCC V5 只支持 C90,局部变量必须在函数开头声明。int x=1; x++; int y=2;这种 C99 混合声明会编译报错。不用纠结"为什么",就是编译器版本不支持。

适合谁读:用 Keil ARMCC V5 编译,变量声明报错的嵌入式开发者。

问题

写了段代码:

void Func(void) { uint8_t u8Idx = 0; u8Idx++; float fVal = 0.0F; // ← 编译报错! }

错误信息:expected ';'declaration may not appear after executable statement

原因

ARMCC V5 基于 C90 标准。C90 要求所有变量声明必须在可执行语句之前。C99 才允许随处声明。

解决

void Func(void) { uint8_t u8Idx = 0; // 所有变量在这声明 float fVal = 0.0F; // u8Idx++; fVal = 1.5F; }

声明全部移到函数开头。习惯了就好——不是编译器 bug,是标准版本不兼容。


有用的话点个收藏,下次调试直接用。有问题欢迎评论区交流,看到了都会回。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/30 13:25:09

半透明豆包 AI 水印难以清除?4 套 PS 无痕修图完整教程

1. 文章解决的核心问题、适用人群与前置说明1.1 核心待解决故障使用豆包 AI 生成图片后,画面右下角会生成半透明文字 Logo 水印,水印与原图光影、像素深度融合,使用常规 PS 工具修复后存在以下问题:放大图片可见淡文字残影&#x…

作者头像 李华
网站建设 2026/7/30 13:23:04

ADCP技术发展与应用全解析:从原理到实践

1. ADCP技术发展全景解析ADCP(声学多普勒流速剖面仪)作为海洋水文测量的核心设备,其技术演进与海洋经济发展紧密相连。2026版白皮书的发布标志着该领域已进入智能化、高精度化的新阶段。从1980年代第一代窄带设备到如今的宽带相控阵系统&…

作者头像 李华
网站建设 2026/7/30 13:19:31

Java多线程原理与高并发实战指南

1. 为什么我们需要深入理解Java多线程?第一次接触Java多线程是在2013年做电商系统秒杀功能时。当时系统在高峰期频繁崩溃,排查后发现是线程池配置不当导致请求堆积。这个惨痛教训让我意识到,多线程不是简单的new Thread().start()就能搞定的事…

作者头像 李华