Funciones que se ejecutan antes y después de main() en C

Con la familia GCC de compiladores C, podemos marcar algunas funciones para que se ejecuten antes y después de main(). Por lo tanto, se puede ejecutar un código de inicio antes de que se inicie main(), y un código de limpieza se puede ejecutar después de que finalice main(). Por ejemplo, en el siguiente programa, myStartupFun() se llama antes de main() y myCleanupFun() se llama después de main().

#include<stdio.h>
  
/* Apply the constructor attribute to myStartupFun() so that it
    is executed before main() */
void myStartupFun (void) __attribute__ ((constructor));
  
  
/* Apply the destructor attribute to myCleanupFun() so that it
   is executed after main() */
void myCleanupFun (void) __attribute__ ((destructor));
  
  
/* implementation of myStartupFun */
void myStartupFun (void)
{
    printf ("startup code before main()\n");
}
  
/* implementation of myCleanupFun */
void myCleanupFun (void)
{
    printf ("cleanup code after main()\n");
}
  
int main (void)
{
    printf ("hello\n");
    return 0;
}

Producción:

startup code before main()
hello
cleanup code after main()

Al igual que la característica anterior, GCC ha agregado muchas otras características interesantes al lenguaje C estándar. Vea esto para más detalles.

Artículo relacionado:
Ejecución de main() en C – detrás de escena

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *