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

代码无语法错误却无法编译?missing-braces错误修复求助

解决GCC编译错误:missing braces around initializer [-Werror=missing-braces]

你的代码在初始化结构体数组时,每个struct entry实例的成员没有用大括号包裹。GCC的-Werror=missing-braces选项会将这种不规范的初始化触发的警告直接升级为错误,导致编译失败——尽管C标准允许省略大括号的初始化,但严格编译模式下会被拦截。

修复方案(推荐)

给数组中每个结构体实例的初始化值加上大括号,让代码符合严格编译的规范,同时提升可读性:

struct entry {
   char *lexptr;
   int token;  
};
struct entry keywords[] = {
        {"div", DIV},
        {"mod", MOD},
        {"if", IF},
        {"while", WHILE},
        {"then", THEN},
        {"do", DO},
        {"begin", BEGIN},
        {"end", END},
        {0, 0}
};

临时替代方案(不推荐)

如果不想修改代码,可以在编译命令中移除-Werror=missing-braces选项,或者添加-Wno-missing-braces来禁用该警告。但这种方式会降低代码的规范性,可能隐藏潜在的初始化逻辑问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:33:10