Yıllar önce fark ettiğimden beri, bunun varsayılan olarak bir hata üretmediğini (en azından GCC'de), neden hep merak ettim?
Bir uyarı oluşturmak için derleyici bayrakları verebileceğinizi anlıyorum, ancak her zaman bir hata olmamalı mı? Geçersiz olmayan bir fonksiyonun bir değer döndürmemesi neden mantıklı geliyor?
Yorumlarda talep edilen bir örnek:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
... derler.
-Werror=return-typesadece bu uyarıyı bir hata olarak ele alacaktır. Uyarıyı göz ardı ettim ve geçersiz bir thisişaretçiyi takip eden birkaç dakikalık hayal kırıklığı beni buraya ve bu sonuca götürdü.
std::optionalişlevin sonundan geri dönmeden akmanın "gerçek" bir isteğe bağlı olarak dönmesi gerçeğiyle daha da kötüleşir