Вопрос

Есть много способов, как выйти из программы в C. Некоторые из них возвращают ноль или код ошибки, используя функцию выхода с помощью exit_success, exit_failure, exit (0), выхода (1) или какого -либо другого кода ошибки, прерван Не могу думать сейчас.

Мой вопрос в том, какой вариант лучший и почему. Я спрашиваю здесь, потому что каждый раз, когда я задавал более опытным программистам по этому вопросу, он оказался священной войной.

Это было полезно?

Решение

Я думаю, что лучшее-вернуть exit_success или вернуть ненулевой номер, для которого вы задокументировали код ошибки, или exit_failure, если вы не можете определить коды ошибок для всех условий, которые могут привести к выходу из строя. Это позволило бы программе, использующей вашу программу (в функции трубы или пакетирования) фактически использовать код ошибки, чтобы определить, что делать дальше, если применимо.

Лично я не женат на макросах, которые всегда, на каждой отдельной реализации на Земле, равны 0, но эй, такой комментарий может вызвать вас.

Другие советы

Там нет ни одного «лучшего». Если вы хотите максимизировать переносимость, вы можете использовать только три значения: exit_success, exit_falure и 0 (и 0 и exit_success означают одно и то же). Если вы не против потерять некоторую переносимость, часто полезно возвращать различные другие значения, чтобы указать, почему что-то не удалось, или (в некоторых случаях) возвращает ненулевое значение даже в случае успеха, чтобы указать такие вещи, как много x, это найдено или переносят результат расчета и т. Д.

Таким образом, у вас есть выбор между портативностью (но в основном для систем, которые вам, вероятно, не заботятся, в основном виртуальных машин) и функциональностью в слегка уменьшенном наборе систем. Вы должны решить, что для вас важнее.

РЕДАКТИРОВАТЬ: Нет, exit_success делает нет Всегда равен нулю - но (по крайней мере, в отношении стандартных забот) они означают одно и то же. Однако на виртуальных машинах было по крайней мере один компилятор, который определил exit_success до ненулевого значения (виртуальные машины обычно интерпретировали даже числа как неудача и нечетные числа как успех, поэтому exit_success был определен на соответствующее нечетное число, а 0 рассматривался специально, специально, специально обработан, специально, специально. Таким образом, система получила нечетное число, когда/если вы его вернули).

Лицензировано под: CC-BY-SA с атрибуция
scroll top