首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

有返回值的函数,却没有return语句,这种情况下有没有标准语义?解决办法

2012-03-12 
有返回值的函数,却没有return语句,这种情况下有没有标准语义?比如:bool fun(){if (0)return false}int ma

有返回值的函数,却没有return语句,这种情况下有没有标准语义?
比如:
bool fun()
{
  if (0)
  return false;
}

int main()
{
  bool re = fun();
}

这个fun函数,在vc下面,肯定是有警告输出的,但用g++编译,却没有警告。如果这是一种标准语义,那么它是什么?如果不是标准语义,为什么g++不报错或者警告?

[解决办法]
不知道g++ 是怎么解释的,同求解
[解决办法]
不太清楚。。。
[解决办法]
曾经调试了一下午+一晚上最终发现这个BUG的路过,太TMD坑爹了。
[解决办法]

探讨
比如:
bool fun()
{
if (0)
return false;
}

int main()
{
bool re = fun();
}

这个fun函数,在vc下面,肯定是有警告输出的,但用g++编译,却没有警告。如果这是一种标准语义,那么它是什么?如果不是标准语义,为什么g++不报错或者警告?

[解决办法]
if语句里面的条件判断不是在编译时就可以确定的。程序运行时才知道,是动态联编。

如果显示地在函数结尾加一条return;,会报错。最后面的这个return;是属于静态联编,编译器可以检查是否匹配,否则报错。

我是这么理解的。

C/C++ code
bool fun(){    if (0)        return false;    //return;}int main(){    bool re = fun();} 

热点排行