std:: at_quick_exit
From cppreference.net
C++
Utilities library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Program support utilities
| Program termination | ||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| Unreachable control flow | ||||||||||||||||||||||||||||||||||||
|
(C++23)
|
||||||||||||||||||||||||||||||||||||
| Communicating with the environment | ||||||||||||||||||||||||||||||||||||
| Signals | ||||||||||||||||||||||||||||||||||||
| Signal types | ||||||||||||||||||||||||||||||||||||
| Non-local jumps | ||||||||||||||||||||||||||||||||||||
| Types | ||||||||||||||||||||||||||||||||||||
|
ヘッダーで定義
<cstdlib>
|
||
|
int
at_quick_exit
(
/*atexit-handler*/
*
func
)
noexcept
;
int at_quick_exit ( /*c-atexit-handler*/ * func ) noexcept ; |
(1) | (C++11以降) |
|
extern
"C++"
using
/*atexit-handler*/
=
void
(
)
;
extern "C" using /*c-atexit-handler*/ = void ( ) ; |
(2) | ( 説明専用* ) |
func
が指す関数を、クイックプログラム終了時(
std::quick_exit
経由)に呼び出されるよう登録します。
複数のスレッドからこの関数を呼び出してもデータ競合は発生しません。実装は少なくとも32個の関数の登録をサポートすることが保証されています。正確な制限は実装定義です。
登録された関数は 正常なプログラム終了 時には呼び出されません。その場合に関数を呼び出す必要がある場合は、 std::atexit を使用する必要があります。
目次 |
パラメータ
| func | - | プログラムの高速終了時に呼び出される関数へのポインタ |
戻り値
0 登録が成功した場合は0、それ以外の場合は0以外の値。
注記
これら2つのオーバーロードは区別されます。なぜなら、パラメータ
func
の型が異なるためです(
language linkage
はその型の一部です)。
例
このコードを実行
#include <cstdlib> #include <iostream> void f1() { std::cout << "pushed first" << std::endl; // flush is intentional } extern "C" void f2() { std::cout << "pushed second\n"; } int main() { auto f3 = [] { std::cout << "pushed third\n"; }; std::at_quick_exit(f1); std::at_quick_exit(f2); std::at_quick_exit(f3); std::quick_exit(0); }
出力:
pushed third pushed second pushed first
関連項目
|
異常なプログラム終了を引き起こす(クリーンアップなし)
(関数) |
|
|
クリーンアップを行った正常なプログラム終了を引き起こす
(関数) |
|
|
std::exit()
呼び出し時に実行される関数を登録する
(関数) |
|
|
(C++11)
|
完全なクリーンアップなしで高速なプログラム終了を引き起こす
(関数) |
|
Cドキュメント
for
at_quick_exit
|
|