std:: at_quick_exit
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Program termination | ||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| Unreachable control flow | ||||||||||||||||||||||||||||||||||||
|
(C++23)
|
||||||||||||||||||||||||||||||||||||
| Communicating with the environment | ||||||||||||||||||||||||||||||||||||
| Signals | ||||||||||||||||||||||||||||||||||||
| Signal types | ||||||||||||||||||||||||||||||||||||
| Non-local jumps | ||||||||||||||||||||||||||||||||||||
| Types | ||||||||||||||||||||||||||||||||||||
|
Défini dans l'en-tête
<cstdlib>
|
||
|
int
at_quick_exit
(
/*atexit-handler*/
*
func
)
noexcept
;
int at_quick_exit ( /*c-atexit-handler*/ * func ) noexcept ; |
(1) | (depuis C++11) |
|
extern
"C++"
using
/*atexit-handler*/
=
void
(
)
;
extern "C" using /*c-atexit-handler*/ = void ( ) ; |
(2) | ( exposition uniquement* ) |
Enregistre la fonction pointée par
func
pour être appelée lors de la terminaison rapide du programme (via
std::quick_exit
).
L'appel de la fonction depuis plusieurs threads n'induit pas une course aux données. L'implémentation garantit la prise en charge de l'enregistrement d'au moins 32 fonctions. La limite exacte est définie par l'implémentation.
Les fonctions enregistrées ne seront pas appelées lors d'une terminaison normale du programme . Si une fonction doit être appelée dans ce cas, std::atexit doit être utilisé.
Table des matières |
Paramètres
| func | - | pointeur vers une fonction à appeler lors de la fin rapide du programme |
Valeur de retour
0 si l'enregistrement réussit, valeur non nulle sinon.
Notes
Les deux surcharges sont distinctes car les types du paramètre
func
sont distincts (la
linkage de langage
fait partie de son type).
Exemple
#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); }
Sortie :
pushed third pushed second pushed first
Voir aussi
|
provoque la fin anormale du programme (sans nettoyage)
(fonction) |
|
|
provoque la fin normale du programme avec nettoyage
(fonction) |
|
|
enregistre une fonction à appeler lors de l'invocation de
std::exit()
(fonction) |
|
|
(C++11)
|
provoque la fin rapide du programme sans nettoyage complet
(fonction) |
|
Documentation C
pour
at_quick_exit
|
|