Chinaunix

标题: 函数返回类型为std::string时 不返回就出错。为什么 [打印本页]

作者: 山外山    时间: 2008-05-07 23:18
标题: 函数返回类型为std::string时 不返回就出错。为什么
谢谢大家。如题:

#include <string>
using namespace std;

string foo()
{
    ;  //这里不返回任何东西。为什么编译通过但是运行会出错?build-in type 如int就没有这个问题。为什么
}

int main()
{
    foo();
}
作者: converse    时间: 2008-05-07 23:19
LZ先说说看为什么你觉得没错吧....
作者: 山外山    时间: 2008-05-07 23:27
我知道标准来说是要返回的。但是实际上不返回是乎也只是一个warning吧
作者: caijimin    时间: 2008-05-08 08:43
个人意见,可能把eax当作返回值了,但eax不是string, 当作int则没有问题
作者: ideawu    时间: 2008-05-08 11:18
这和编译器的实现有关, 我用gcc3.4.4测试, 无论函数返回值类型是int还是string, 编译都通过且运行没有错误. 如果使用vc6.0, 则无法编译通过.

楼主用的是不是gcc? 版本是多少? 可以看下面的链接: http://gcc.gnu.org/ml/gcc-patches/2000-10/msg00115.html




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2