При выполнении следующего кода кода неудачной компиляции 1, однако, на основе this, я ожидаю, что это будет = = 3. Почему это? Что я могу сделать, если мне нужны более подробные коды выхода, чем бинарный успех/неудача?Неожиданный статус выхода при использовании -pass-exit-кодов в g ++
> 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)
Thanks.
Имеет смысл. Вопрос в том, какие коды выхода для версии> = 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