2

在回答这个问题Unexpected exit status when using -pass-exit-codes in g++时,我意识到编译器指令的文档-pass-exit-codes非常晦涩:

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

这导致了“其他可能的错误代码是什么?”的问题。如果还有其他可能的错误代码,它们可能对程序员很有价值,因此他可以将它们用于编译自动化。

在遵循在 gcc 4.8.2 中定义和返回退出值的方式之后(https://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2 ),看起来唯一可能的退出代码是0( SUCCESS_EXIT_CODE)、1( FATAL_EXIT_CODE) 和4( ICE_EXIT_CODE)。

现在,在 gcc 开发的问题跟踪系统(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22600#c4)中,我们可以看到初始补丁3被任意建议作为 ICE- 的返回值相关的退出代码。然后有人建议使用2,除非2已经使用了其他错误代码,并且它最终被分配4给没有额外评论为什么4选择。是否有错误代码 3 和 4?它们是干什么用的?

因为知道其他退出代码可能对使用 gcc/g++ 的程序员有益。是否有详细记录的 gcc 可能退出代码列表?如果没有,gcc 团队可能应该考虑将其添加到文档中。

4

0 回答 0