Seit ich vor vielen Jahren festgestellt habe, dass dies standardmäßig keinen Fehler erzeugt (zumindest in GCC), habe ich mich immer gefragt, warum?
Ich verstehe, dass Sie Compiler-Flags ausgeben können, um eine Warnung zu erzeugen, aber sollte es nicht immer ein Fehler sein? Warum ist es sinnvoll, dass eine nicht ungültige Funktion, die keinen Wert zurückgibt, gültig ist?
Ein Beispiel wie in den Kommentaren angefordert:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... kompiliert.
-Werror=return-type
behandelt nur diese Warnung als Fehler. Ich habe die Warnung einfach ignoriert und die paar Minuten der Frustration, die einen ungültigen this
Zeiger aufspürten, führten mich hierher und zu dieser Schlussfolgerung.
std::optional
Funktion ohne Rückgabe ein "wahres" optionales Ergebnis zurückgibt