在回答这个问题Unexpected exit status when using -pass-exit-codes in g++时,我意识到编译器指令-pass-exit-codes
的文档非常模糊:
-pass退出码 通常,如果编译器的任何阶段返回非成功返回代码,则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
({{1 }}),SUCCESS_EXIT_CODE
(1
)和FATAL_EXIT_CODE
(4
)。
现在,在gcc开发的问题跟踪系统(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22600#c4)中,我们可以看到初始补丁建议ICE_EXIT_CODE
任意作为ICE相关退出代码的返回值。然后有人建议使用3
,除非其他错误代码已经使用2
,并且最终被分配给2
,没有给出为什么4
被选中的额外评论。那么错误代码是3还是4?它们用于什么?
因为了解其他退出代码对于使用gcc / g ++的程序员来说可能是有益的。是否有来自gcc的可能退出代码的文件清单?如果没有,可能应考虑在gcc团队的文档中添加。