【问题标题】:Possibility to simulate -Werror option behavior with GCC 3.4?是否可以使用 GCC 3.4 模拟 -Werror 选项行为?
【发布时间】:2011-09-09 09:30:02
【问题描述】:

是否有希望强制 GCC 3.4 编译器像 GCC 的 4.4 -Werror 选项那样将所有警告变成错误?

谢谢

【问题讨论】:

  • 有什么理由不升级到 4.4 吗?这将是完美的解决方案:)
  • 我不能,因为我们使用的第三方库与 gcc 4.4 不兼容 :-(
  • gcc 3.4.6 接受-Werror(见bottom of manual); gcc 3.3.6 also accepts it !!
  • 糟糕,不知何故我错过了该功能 :-) 非常感谢!

标签: c warnings gcc3


【解决方案1】:

如果 gcc 向 stderr 写入任何内容,您可以将其包装并返回错误。

执行GCC,将stderr重定向到一个文件,cat文件到stderr:

temp=$(tempfile)
trap rm "$temp" EXIT

gcc "$@" 2>"$temp"
ret=$?

cat "$temp" >&2

如果不是 0,则返回 gcc 的退出状态:

if [ "$ret" != 0 ]; then
    exit $ret;
}

如果文件不为空,则返回 1:

if [ $(stat --format=%s "$temp") != "0" ]; then
    exit 1;
}

【讨论】:

    【解决方案2】:

    丑陋的hack,只需grep“警告:”

    gcc files.c 2>&1 | grep "warning:" && exit 1
    

    将出口 1 替换为发现警告时应执行的操作。

    【讨论】:

      【解决方案3】:

      正如@pmg 所说 -

      gcc 3.4.6 接受 -Werror(见手册底部); gcc 3.3.6 也 接受!!

      真正的学分应该去pmg,但也感谢其他所有人:-)

      【讨论】:

        猜你喜欢
        • 2015-03-14
        • 1970-01-01
        • 2020-06-01
        • 1970-01-01
        • 2021-05-28
        • 2011-12-11
        • 2011-12-21
        • 1970-01-01
        • 2015-05-16
        相关资源
        最近更新 更多