_Noreturn 関数指定子
提供: cppreference.com
関数が呼び出し元に戻らないことを指定します。
構文
_Noreturn function_declaration
|
(C11以上) | ||||||||
説明
_Noreturn キーワードは関数宣言で使用でき、その関数が return 文を実行したり関数本体の終わりに到達することによって戻らないことを指定します (longjmp を実行することによって戻ることはできます)。 _Noreturn 宣言された関数が戻った場合、動作は未定義です。 検出可能であれば、コンパイラはこれを診断することが推奨されます。
_Noreturn 指定子は同じ関数の宣言内に複数回現れても構いません。 動作は1度しか現れない場合と同じです。
この指定子は、通常、ヘッダ <stdnoreturn.h> で提供される便利マクロ noreturn を通して使用されます。
キーワード
標準ライブラリ
標準ライブラリの以下の関数は noreturn です。
例
Run this code
#include <stdlib.h>
#include <stdio.h>
#include <stdnoreturn.h>
// i <= 0 の場合は未定義動作を発生させます。
// i > 0 の場合は終了します。
noreturn void stop_now(int i) // _Noreturn void stop_now(int i) でも構いません。
{
if (i > 0) exit(i);
}
int main(void)
{
puts("Preparing to stop...");
stop_now(2);
puts("This code is never executed.");
}
出力:
Preparing to stop...
参考文献
- C11 standard (ISO/IEC 9899:2011):
- 6.7.4 Function specifiers (p: 125-127)
- 7.23 _Noreturn <stdnoreturn.h> (p: 361)
関連項目
[[noreturn]] の C++リファレンス |