C++ 属性: noreturn (C++11 起)

来自cppreference.com
< cpp‎ | language‎ | attributes

指示函数不返回。

目录

[编辑] 语法

[[noreturn]]

[编辑] 解释

指示函数不返回。

此属性仅应用到函数声明中正在声明的函数名。若拥有此属性的函数实际上返回,则行为未定义。

若函数的任何声明指定此属性,则其首个声明必须指定它。若在一个单元中声明函数带 [[noreturn]] 属性,而在另一翻译单元中声明同一函数不带 [[noreturn]] 属性,则程序为病式;不要求诊断。

[编辑] 示例

[[ noreturn ]] void f() {
  throw "error";
  // OK
}
 
void q [[ noreturn ]] (int i) {
  // 若以 <= 0 的参数调用则行为未定义
  if (i > 0) {
    throw "positive";
  }
}
 
// void h() [[noreturn]]; // 错误:属性应用到 h 的函数类型,而非 h 自身


[编辑] 标准库

下列标准函数声明带有 noreturn 属性:

终止函数
(C++11)
导致正常程序终止,不清理
(函数) [编辑]
导致异常程序终止(不清理)
(函数) [编辑]
导致正常程序终止并清理
(函数) [编辑]
导致快速程序终止,不完全清理
(函数) [编辑]
异常处理失败时调用的函数
(函数) [编辑]
(C++17 中移除)
违背动态异常规定时调用的函数
(函数) [编辑]
始终抛出的函数
从一个 std::exception_ptr 抛出异常
(函数) [编辑]
抛出存储的异常
(std::nested_exception 的公开成员函数)
抛出其参数,带上混入的 std::nested_exception
(函数模板) [编辑]
非局部跳转 (C++17 起)
跳转到指定位置
(函数) [编辑]

[编辑] 参阅

_NoreturnC 文档