This question already has answers here:
Can I tell the compiler to consider a control path closed with regards to return value?

(3个答案)


上个月关闭。




当调用总是从返回值的函数抛出的函数时,编译器经常警告并非所有控制路径都返回值。正当如此。
void AlwaysThrows() { throw "something"; }

bool foo()
{
    if (cond)
        AlwaysThrows();
    else
        return true; // Warning C4715 here
}

有没有办法告诉编译器AlwaysThrows会执行它所说的?

我知道我可以在函数调用后添加另一个throw:
{ AlwaysThrows(); throw "dummy"; }

而且我知道我可以明确禁用该警告。但是我想知道是否有更优雅的解决方案。

最佳答案

使用Visual C++,可以使用__declspec(noreturn)

09-07 06:36