gpt4 book ai didi

c++ - noreturn 的意义何在?

转载 作者:IT老高 更新时间:2023-10-28 11:29:21 24 4
gpt4 key购买 nike

[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/

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