c++ - noreturn 的意义何在?

标签 c++ c++11 attributes noreturn

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

相关文章:

html - 将嵌套的粗体斜体 HTML 标签转换为 NSAttributedString

c++ - 在 SFINAE 上下文中使用的表达式中使用的 static_assert

c++ - std::vector 使用 back()、pop_back()、push_back(),得到 'double free or corruption' 错误

c++ - 尝试渲染 3d 三角形会破坏 Nvidia 驱动程序!为什么? [C++ && DirectX11 SDK]

c++ - 使用标准 C++ wifstream 读取 UTF-8 文本并转换为 UTF-16

c++ - 在 move 构造函数中用作 arg 后,哪些 std 类型保证为空/空

jquery - 单击时,隐藏 div 并删除所需的属性

c++ - 赋值运算符和初始化

c++ - Openmp渲染bmp图片

java - LDAP+ Java : How can I know my active directory's names