std:: at_quick_exit
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Program termination | ||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||
| Unreachable control flow | ||||||||||||||||||||||||||||||||||||
|
(C++23)
|
||||||||||||||||||||||||||||||||||||
| Communicating with the environment | ||||||||||||||||||||||||||||||||||||
| Signals | ||||||||||||||||||||||||||||||||||||
| Signal types | ||||||||||||||||||||||||||||||||||||
| Non-local jumps | ||||||||||||||||||||||||||||||||||||
| Types | ||||||||||||||||||||||||||||||||||||
|
Definido en el encabezado
<cstdlib>
|
||
|
int
at_quick_exit
(
/*atexit-handler*/
*
func
)
noexcept
;
int at_quick_exit ( /*c-atexit-handler*/ * func ) noexcept ; |
(1) | (desde C++11) |
|
extern
"C++"
using
/*atexit-handler*/
=
void
(
)
;
extern "C" using /*c-atexit-handler*/ = void ( ) ; |
(2) | ( solo para exposición* ) |
Registra la función apuntada por
func
para ser llamada en la terminación rápida del programa (mediante
std::quick_exit
).
Llamar a la función desde varios hilos no induce una condición de carrera. La implementación garantiza soportar el registro de al menos 32 funciones. El límite exacto está definido por la implementación.
Las funciones registradas no serán llamadas durante la terminación normal del programa . Si una función necesita ser llamada en ese caso, std::atexit debe ser utilizado.
Contenidos |
Parámetros
| func | - | puntero a una función que será llamada en la terminación rápida del programa |
Valor de retorno
0 si el registro tiene éxito, valor distinto de cero en caso contrario.
Notas
Las dos sobrecargas son distintas porque los tipos del parámetro
func
son distintos (el
language linkage
es parte de su tipo).
Ejemplo
#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); }
Salida:
pushed third pushed second pushed first
Véase también
|
provoca la terminación anormal del programa (sin limpieza)
(función) |
|
|
provoca la terminación normal del programa con limpieza
(función) |
|
|
registra una función para ser llamada durante la invocación de
std::exit()
(función) |
|
|
(C++11)
|
provoca la terminación rápida del programa sin limpieza completa
(función) |
|
Documentación de C
para
at_quick_exit
|
|