執行以下操作時,失敗編譯的退出代碼爲1,但根據this,我預計它會大於等於3。爲什麼是這樣?如果我想要比二進制成功/失敗更詳細的退出代碼,我該怎麼辦?在g ++中使用-pass退出代碼時發生意外退出狀態
> 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)
謝謝。
有道理。然後問題是版本> = 4的退出代碼是什麼?沒有在任何地方找到它們,也無法想出激發1以外的退出代碼的方式(我認爲它必須表示「源文件無法編譯」)。 – user1622959
不幸的是,除了退出代碼4(內部編譯器錯誤),似乎沒有文檔。如果你遵循gcc 4.8.2源代碼(在gcc/system.h)中定義的錯誤代碼(和覆蓋),唯一定義的是0,1和4,所以我想這就是它。 –
我正在尋找區分內部g ++錯誤與源代碼錯誤,特別是,我需要確定以下錯誤:'fatal_error(input_location,「必須重新定位PCH」);'(gcc/gcc-common.c)。根據我對代碼的快速瀏覽,'fatal'會是1的退出碼,這是正確的嗎? – user1622959