Dlaczego wypływanie z końca funkcji nie-pustej bez zwracania wartości nie powoduje błędu kompilatora?
Odkąd uświadomiłem sobie wiele lat temu, że domyślnie nie powoduje to błędu (przynajmniej w GCC), zawsze zastanawiałem się dlaczego?
Rozumiem, że możesz wydawać flagi kompilatora, aby wygenerować ostrzeżenie, ale czy nie zawsze musi to być błąd? Dlaczego sensowne jest, aby funkcja nie-pusta, która nie zwraca wartości, była ważna?
Przykład wymagany w komentarzach:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... kompiluje.