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-type
sadece bu uyarıyı bir hata olarak ele alacaktır. Uyarıyı göz ardı ettim ve geçersiz bir this
işaretçiyi takip eden birkaç dakikalık hayal kırıklığı beni buraya ve bu sonuca götürdü.
std::optional
iş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