执行以下操作时,失败的编译的退出代码为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)


谢谢。

最佳答案

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


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


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

关于c++ - 在G++中使用-pass-exit-codes时出现意外的退出状态,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34889522/

10-11 21:55