Почему выпадение из конца непустой функции без возврата значения не приводит к ошибке компилятора?

С тех пор как я понял много лет назад, что это непо умолчанию не выдает ошибку (по крайней мере, в GCC), яМы всегда задавались вопросом, почему?

Я понимаю, что вы можете выдавать флаги компилятора для выдачи предупреждения, но неэто всегда ошибка? Почему имеет смысл, чтобы не пустая функция не возвращала значение, чтобы быть действительным?

Пример в соответствии с просьбой в комментариях:

#include 
int stringSize()
{
}

int main()
{
    char cstring[5];
    printf( "the last char is: %c\n", cstring[stringSize()-1] ); 
    return 0;
}

... компилирует.

Ответы на вопрос(8)

Ваш ответ на вопрос