Начиная со стандарта C99, компилятор должен генерировать эквивалент return 0
или return EXIT_SUCCESS
, если в конце main
возврат невозможен. В то же время было также соответствующее и идентичное изменение для языка С++. Меня интересуют причины обоих, и я догадался, что вряд ли они были бы совершенно отдельными и несвязанными изменениями.
Мой вопрос:
Каково было документированное обоснование этого изменения?
Идеальный ответ привел бы авторитетные источники как для C, так и для С++, поэтому я поставил вопрос на оба языка.
Обратите внимание, что в отличие от вопроса Какие причины для возврата 0 из основного в ISO С++?, я не прошу совета о том, писать ли return 0
в моих программах - я спрашиваю, почему сами языковые стандарты были изменены.
Чтобы понять цель вопроса, вот немного больше контекста:
- Понимание того, почему было сделано изменение, полезно при принятии решения о его использовании.
- Обоснование часто включается в сам стандарт. Например, стандарт C90 включает в себя множество пояснительных сносок, таких как сноска 36, которая начинается: "Цель этого списка..."
Я изучил стандарты, которые искали ответ, прежде чем я спросил здесь, но не нашел ответа. Меня попросили помочь написать стандарты кодирования для обоих языков для группы программистов, и я хотел убедиться, что я понимаю, почему эта функция существует, чтобы я мог точно объяснить ее использование другим.