在g ++中使用-pass-exit-codes时出现意外的退出状态

时间:2016-01-20 00:36:10

标签: c++ gcc g++ exit-code

执行以下操作时,失败的编译的退出代码为1,但是,基于this,我希望它是> = 3。为什么是这样?如果我想要比二进制成功/失败更详细的退出代码,我该怎么办?

> echo "int main() {fail}" > fail.cpp
> g++ -pass-exit-codes fail.cpp -o fail
fail.cpp: In function ‘int main()’:
fail.cpp:1: error: ‘fail’ was not declared in this scope
fail.cpp:1: error: expected ';' before ‘}’ token
> echo $?
1
> g++ --version
g++ (GCC) 4.1.3 20080704 (Red Hat 4.1.2-27)

感谢。

1 个答案:

答案 0 :(得分:0)

您指向的文档属于gcc版本3.3.6。但是,在版本> = 4中,该编译器标志的文档已更改,现在它只声明:

  

-pass-exit-codes
          通常,如果编译器的任何阶段返回非成功返回代码,则gcc程序将以代码1退出。如果你指定           -pass-exit-codes,gcc程序返回时返回错误的任何阶段产生的数字最大错误           指示。如果遇到内部编译器错误,C,C ++和Fortran前端将返回4。

阅读时有点混乱。它没有指定3.x文档中很好解释的错误代码。然后,有可能在gcc / g ++版本4.x中不再生成您要查找的退出代码。