gpt4 book ai didi

c++ - 仅在 Debug模式下生成 C4715

转载 作者:搜寻专家 更新时间:2023-10-31 01:37:08 26 4
gpt4 key购买 nike

为什么下面的代码会在 Debug模式下生成 warning C4715: 'f' : not all control paths return a value 而不是在 Release 模式下?我正在使用 Visual Studio 2013 update 4 进行构建。

#include <stdexcept>

__declspec(noreturn) void raiseerr() {
throw std::runtime_error("");
}

void raiseerr2() {
raiseerr();
}

int f(const int x) {
switch (x) {
case 3:
{
return 54;
}
break;
default:
raiseerr2();
}
}

int main() {
return f(4);
}

最佳答案

禁用优化时会出现警告 (/Od)。这表明当启用优化时,raiseerr2 在编译器检查 C4715 之前被省略。

这造成麻烦的原因是我们通常只构建 Release模式(因为它构建起来更快),但是在切换到调试时我们的构建失败了(因为我们喜欢使用 /WX)。

解决方法是在raiseerr2中加入__declspec(noreturn)。不过还是感觉有点脏...

关于c++ - 仅在 Debug模式下生成 C4715,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34606829/

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