为什么局部变量要放函数开头——ARMCC V5的C90约束 一句话: ARMCC V5 只支持 C90局部变量必须在函数开头声明。int x1; x; int y2;这种 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是标准版本不兼容。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。