Da quando ho capito molti anni fa che questo non produce un errore di default (almeno in GCC), mi sono sempre chiesto perché?
Comprendo che è possibile emettere flag di compilatore per generare un avviso, ma non dovrebbe sempre essere un errore? Perché ha senso che una funzione non nulla non restituisca un valore valido?
Un esempio come richiesto nei commenti:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... compila.
-Werror=return-type
tratterà solo quell'avvertimento come un errore. Ho appena ignorato l'avvertimento e il paio di minuti di frustrazione rintracciare un invalidothis
puntatore mi portano qui e fino a questa conclusione.
std::optional
funzione senza tornare restituisce un "vero" optional