You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译C文件遇‘expected an expression’错误,如何解决?

问题解决:C编译错误 "error: expected an expression"

错误原因

你的编译器默认使用C89标准,而C89不允许在for循环的初始化语句中直接声明变量(for (int i = 0; ...)这种写法是C99及后续标准才支持的语法)。

解决方法

方法1:提前声明循环变量

把int i的声明移到for循环外,符合C89语法要求:

void initRacks(struct rack_t *racks, int n) {
  int i;
  for (i = 0; i < n; i++){
    racks[i].widthA = i + 2.5;
    racks[i].widthB = i + 1.5;
  }
}

方法2:指定C99及以上标准编译

如果想保留for循环内声明变量的写法,编译时给编译器加上对应标准参数。比如使用GCC编译时:

gcc -std=c99 你的源文件名.c -o 输出程序名

(Clang编译器同样适用该参数)

内容的提问来源于stack exchange,提问作者SilverShroud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 06:27:08