Недавно я увидел что-то любопытное. В исходном коде HHVM первые три строки функции main()
читаются следующим образом:
if (!argc) {
return 0;
}
Это немного глупо, но все же, я просто не могу не задаваться вопросом... зачем возвращать 0!? Это не то, что я думаю, что есть правильный способ справиться с этим, но возвращение 0, обычно связанное с успехом, кажется особенно неуместным.
Кроме того, чтобы не сбой, существует ли когда-либо случай, когда соответствующий ответ на argc
равен 0? (Или даже меньше 0?) Имеет ли значение?
Единственный способ, которым я знаю, в случае с argc
0 - с exec()
и друзьями. Если по какой-то причине это случается, это почти наверняка ошибка в вызывающем, и вызываемый не может многое сделать.
(помечены как C и С++, потому что я ожидаю, что ответ будет одинаковым для двух языков)
Изменить: Чтобы сделать вопрос менее расплывчатым и философским, я предложу альтернативу.
if (!argc) {
puts("Error: argc == 0");
return 1;
}
Ключевыми моментом является то, что возвращается ошибка и возвращается ненулевое значение. Это крайне маловероятно, что это было бы необходимо, но если бы вы могли попытаться указать ошибку. С другой стороны, если обнаруженная ошибка столь же серьезна, как argc
равна 0, может быть, есть причина, по которой было бы плохо попытаться получить доступ к stdout или стандартной библиотеке C.