gpt4 book ai didi

C++ 编译器 - 忘记返回语句

转载 作者:太空狗 更新时间:2023-10-29 19:56:58 26 4
gpt4 key购买 nike

我写了一个简单的函数来返回一个字符串供我显示在屏幕上。

static std::string  myFun(int myId){
std::ostringstream stream;
int myStatus;
if(get_status(&myStatus)) stream << get_error();
else{
stream << "my status:" << myStatus;
}
return stream.str();
}

代码本身可能并不重要。但我包含它以防万一。我遇到的问题是因为在我最初的尝试中,我忘记包含 return 语句

return stream.str();

编译器编译没有错误,但是当我运行它的时候。该程序不断收到类似的消息

Aborted(core dumped)

我吓坏了,我搜索我的 stackoverflow 并安装了 valgrind 和所有东西。然后我检查代码,我意识到我只是忘记包含 return 语句!我希望编译器注意到这些类型的错误。

有人可以向我解释为什么编译器无法检测到错误吗?

最佳答案

在非void 函数的所有控制路径上没有return 值的代码的行为未定义。 (C++ 有大量未定义的构造;这可能是因为对开发人员的友好性更倾向于最大性能和可移植性。)

一个好的编译器会就此警告您,甚至会为您提供将该警告(连同其他警告)升级为错误的设置。请查阅您的编译器文档。

关于C++ 编译器 - 忘记返回语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43548102/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com