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

GCC为结构体成员赋值时出现expected类编译报错的原因查询

错误产生原因

你编写的两行结构体成员赋值代码写在了全局作用域(所有函数之外),不符合C语言的语法要求:C语言只允许在全局作用域中完成变量的声明、定义、初始化操作,不允许直接执行赋值类的可执行语句。编译器会把这两行独立的赋值代码识别为不合法的全局声明语法,因此抛出了该错误。

修复方案

你可以任选以下两种方式修改:

  • 方案1:全局变量定义时直接初始化
// 定义全局变量的同时完成成员赋值,符合全局作用域语法规范
ufdm_proactive_cc_glob_t ufdm_procc_globals = {
    .procc_init_count = 1,
    .procc_timestamps = NULL
};
  • 方案2:将赋值逻辑移动到函数内部执行
    你可以把赋值操作放到模块初始化函数、main函数等会在变量使用前被调用的函数体内:
// 先定义全局变量,默认会被初始化为全0
ufdm_proactive_cc_glob_t ufdm_procc_globals;

// 在初始化函数中完成成员赋值
void ufdm_procc_init(void) {
    ufdm_procc_globals.procc_init_count = 1;
    ufdm_procc_globals.procc_timestamps = NULL;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 09:06:08