[dcl.attr.noreturn]提供以下示例:
[[ noreturn ]] void f() {
throw "error";
// OK
}
但是我不明白[[noreturn]]
的意义何在,因为函数的返回类型已经是void
了。
那么,noreturn
属性的意义何在?应该怎么用?
最佳答案
noreturn 属性应该用于不返回给调用者的函数。这并不意味着 void 函数(确实返回给调用者 - 它们只是不返回值),而是在函数完成后控制流不会返回到调用函数的函数(例如退出应用程序的函数,永远循环或抛出异常,如您的示例)。
编译器可以使用它来进行一些优化并生成更好的警告。例如,如果 f
具有 noreturn 属性,编译器可能会在您编写 f() 时警告您
.同样,编译器会知道在调用 g()
是死代码; g();f()
后不会警告您缺少返回语句。
关于c++ - noreturn 的意义何在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10538291/