有返回值的函数,却没有return语句,这种情况下有没有标准语义?
比如:
bool fun()
{
if (0)
return false;
}
int main()
{
bool re = fun();
}
这个fun函数,在vc下面,肯定是有警告输出的,但用g++编译,却没有警告。如果这是一种标准语义,那么它是什么?如果不是标准语义,为什么g++不报错或者警告?
------解决方案--------------------不知道g++ 是怎么解释的,同求解
------解决方案--------------------不太清楚。。。
------解决方案--------------------曾经调试了一下午+一晚上最终发现这个BUG的路过,太TMD坑爹了。
------解决方案--------------------
------解决方案--------------------if语句里面的条件判断不是在编译时就可以确定的。程序运行时才知道,是动态联编。
如果显示地在函数结尾加一条return;,会报错。最后面的这个return;是属于静态联编,编译器可以检查是否匹配,否则报错。
我是这么理解的。
C/C++ code
bool fun()
{
if (0)
return false;
//return;
}
int main()
{
bool re = fun();
}