У меня есть некоторые C-программы без явного возврата из main, например:
int main(int argc, char *argv[])
{
// blah blah
}
Если я скомпилирую их с помощью GCC 4.6.3 и следующих параметров:
gcc file.c -Wall -Wextra
Программы не возвращают 0 и не дают мне проблем, но стандарт (и много других ответов на SO) говорит:
Если тип возврата основной функции является типом, совместимым с int, возврат от начального вызова к основной функции эквивалентен вызову функции выхода со значением, возвращаемым основной функцией в качестве аргумента; [10] достижение}, который завершает основную функцию, возвращает значение 0. Если тип возврата несовместим с int, статус завершения, возвращаемый в среду хоста, не указан.
[10] В соответствии с 6.2.4 времена жизни объектов с автоматической продолжительностью хранения, объявленные в основном, закончились бы в первом случае, даже если они не были бы в последнем.
Мои программы возвращают разные значения, 160, 15, 14... мусор?
Я что-то упустил? Это ошибка GCC? Не удается найти что-либо в онлайн-документе GCC. Является ли GCC еще ссылкой на какой-то старый стандарт C (pre-C99), где это не может быть указано?