Возвращает тип данных функции в c программировании - PullRequest
4 голосов
/ 20 октября 2011

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

1 Ответ

4 голосов
/ 20 октября 2011

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

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

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