Могу ли я пропустить возврат из основного в C?

В C ++ 3.6.1 Основная функция

(3.6.1 / 5) Оператор return в main приводит к выходу из функции main (уничтожению любых объектов с автоматическим хранением) и
Вызов выхода с возвращаемым значением в качестве аргумента. Если контроль достигает
конец основного, не встречая оператора возврата, эффект
выполнение возврата 0;

Могу ли я сделать следующее в C99 без возврата 0?

int main() { }

6

Решение

Да, начиная с C99, достигнув } в конце main возвращает 0, если тип возвращаемого значения main совместим с int,

5.1.2.2.3 Завершение программы

Если тип возвращаемого значения main Функция является типом, совместимым с int, возвращением из начального вызова main Функция эквивалентна вызову exit функция со значением, возвращаемым main функция в качестве аргумента;11) достигнув } что завершает main Функция возвращает значение 0. Если возвращаемый тип не совместим с intстатус завершения, возвращаемый в хост-среду, не указан.

11

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

Да, стандарт C99 гласит (§5.1.2.2.3):

достигнув } что завершает main Функция возвращает значение 0.

6