0

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

谢谢

4

3 回答 3

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;
}
于 2011-09-09T09:43:49.973 回答
1

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

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

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

于 2011-09-09T09:50:50.483 回答
0

正如@pmg 所说-

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

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

于 2011-09-09T11:02:10.667 回答