是否有希望强制 GCC 3.4 编译器将所有警告变成像 GCC 的 4.4 -Werror 选项那样的错误?
谢谢
如果 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;
}
丑陋的黑客,只需 grep “警告:”
gcc files.c 2>&1 | grep "warning:" && exit 1
将出口 1 替换为发现警告时应执行的操作。
正如@pmg 所说-
gcc 3.4.6 接受 -Werror (见手册底部);gcc 3.3.6 也接受它!
真正的学分应该去pmg,但也感谢其他所有人:-)