Неожиданный статус выхода при использовании -pass-exit-code в g ++

При выполнении следующих действий код завершения неудачной компиляции равен 1, однако на основе этот, Я ожидаю, что это будет> = 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)

Благодарю.

1

Решение

Документация, на которую вы указываете, относится к gcc версии 3.3.6. Однако в версии> = 4 документация для этого флага компилятора изменилась, и теперь в ней только говорится:

-пройти-выход-коды
Обычно программа gcc завершает работу с кодом 1, если какая-либо фаза компилятора возвращает неуспешный код возврата. Если вы укажете
-pass-exit-codes, вместо этого программа gcc возвращается с численно наибольшей ошибкой, вызванной любой фазой, возвращающей ошибку
индикация. Внешние интерфейсы C, C ++ и Fortran возвращают 4, если обнаружена внутренняя ошибка компилятора.

Что немного сбивает с толку при чтении. Он не определяет коды ошибок, которые были хорошо объяснены в документации по 3.x. Тогда, возможно, что код выхода, который вы ищете, больше не генерируется в версии 4.x gcc / g ++.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector