Я знаю, что это означает, я просто задаюсь вопросом, почему это сообщение не, а просто предупреждение?
Что происходит в этом случае? Например, предположим, что у меня есть функция
int f()
{
}
и что происходит, когда я это называю?
Компилятор добавляет возвращение "неинициализированного" int
в этом случае?
Или недостающее возвращение может привести к повреждению стека?
Или это (абсолютно) undefined поведение?
Протестировано с помощью gcc 4.1.2 и 4.4.3
РЕДАКТИРОВАТЬ: Чтение ответов. Я понимаю одно, читаю комментарии - другое.
ОК, давайте суммируем: это поведение undefined. Тогда это означает, что можно привести к повреждению стека, не так ли? (это даже означает, что мой компьютер может начать бросать гнилые помидоры через меня через микрофонный домкрат, кричать - "что ты сделал???" ).
Но если это так, то почему в главном ответе здесь говорится, что коррупция стека не может произойти и, в то же время, что поведение undefined?
И undefined в отношении? Вызывающий, который пытается использовать "не возвращенное значение" или просто конец функции, является undefined, если он должен возвращать значение, но это не так?
Или это не undefined поведение, и только пользователь, который пытается использовать значение (которое не возвращается, d'oh!) будет "получать" undefined значение? Другими словами - просто какая-то ценность для мусора, и больше ничего не может произойти?