Возвращает тип данных функции в программировании на c

#c #function #return-type #exitstatus

#c #функция #возвращаемый тип #exitstatus

Вопрос:

я должен использовать команду exit (1) в функции. Имеет ли это какое-либо отношение к возвращаемому типу данных функции, в которой он используется?

Ответ №1:

Нет. exit Функция никогда не возвращает, а вместо этого завершает процесс, из которого она вызвана. Компилятор C не имеет интуитивного понимания этого и обрабатывает его как любую другую void возвращаемую функцию.

Однако это означает, что while exit завершит вашу функцию, компилятор C не видит ее таким образом. Следовательно, ему все равно потребуется действительный возврат, иначе он будет выдавать предупреждения / ошибки (при включенном достаточно высоком уровне ошибок). Но это достаточно легко обойти

 int myFunc() {
  ...
  exit(exitCode);
  return 42;  // Never hit but keeps C compiler happy
}
 

Комментарии:

1. 1 для возврата 42. Я бы дал еще 1 за хороший ответ, однако это невозможно.

2. Правильно. Но обратите внимание, что аргумент to exit() используется в качестве статуса завершения для вашей программы — и значение этого кода состояния зависит от системы. В Unix-подобных системах exit(1); обозначает сбой; на виртуальных машинах он обозначает успех. Используйте exit(EXIT_SUCCESS); для успеха, exit(EXIT_FAILURE); для сбоя (объявленного в <stdlib.h> , который вы должны #include использовать в любом случае, если вы вызываете exit() ). (Как частный случай, exit(0); всегда указывает на успех.) exit(N); эквивалентно return N; in main() .