Depuis que j'ai réalisé il y a de nombreuses années, que cela ne produisait pas d'erreur par défaut (au moins dans GCC), je me suis toujours demandé pourquoi?
Je comprends que vous pouvez émettre des indicateurs de compilateur pour produire un avertissement, mais cela ne devrait-il pas toujours être une erreur? Pourquoi est-il logique qu'une fonction non vide ne renvoyant pas de valeur soit valide?
Un exemple comme demandé dans les commentaires:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... compile.
-Werror=return-type
traitera juste cet avertissement comme une erreur. J'ai simplement ignoré l'avertissement et les quelques minutes de frustration à la recherche d'un this
pointeur invalide m'ont conduit ici et à cette conclusion.
std::optional
fonction sans retourner renvoie un "vrai" facultatif