自从我多年前意识到,默认情况下不会产生错误(至少在GCC中),我一直想知道为什么?
我知道您可以发出编译器标志来产生警告,但是它不总是错误吗?对于非void函数不返回有效值,为什么有意义?
评论中要求的示例:
#include <stdio.h>
int stringSize()
{
}
int main()
{
char cstring[5];
printf( "the last char is: %c\n", cstring[stringSize()-1] );
return 0;
}
...编译。
-Werror=return-type
只会将该警告视为错误。我只是忽略了警告,而经过几分钟的挫败追寻无效this
指针导致我到了这里并得出了这个结论。
std::optional
函数的结尾流出而不返回返回“ true”可选事实,这使情况变得更糟