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

如何在clang的-std=c99模式下强制启用-Werror=declaration-after-statement检查

解决方案

clang 中-Wdeclaration-after-statement警告默认在 C99 及更高版本标准下是关闭的,只需要显式开启该警告,再将其提升为错误即可,不需要切换到 C90 标准。

可用编译命令

clang -std=c99 -Wdeclaration-after-statement -Werror=declaration-after-statement prog.c

该配置在 clang 3.0 及以上所有正式版本均可用。

效果说明

对示例代码执行上述命令后,会输出和 GCC 一致的报错:

prog.c:6:6: error: ISO C90 forbids mixing declarations and code [-Werror,-Wdeclaration-after-statement]
        int i = 0;
            ^
1 error generated.

同时完全保留 C99 标准的所有专属特性支持,不会影响代码中 C99 语法的编译。

参数解释

  • -std=c99: 保留 C99 标准编译,支持所有 C99 专属特性
  • -Wdeclaration-after-statement: 显式开启「语句后声明变量」的检查,不受当前启用的 C 标准限制
  • -Werror=declaration-after-statement: 将该警告升级为编译错误,强制符合编码规范

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:18:03