| Entendiendo el Mecanismo de Inicio (Initcall) del Kernel de Linux: Creando funciones Dinámicas de apuntadores de Llamadas a Tablas | ||
|---|---|---|
| <<< Anterior | Siguiente >>> | |
El especificar un atributo da al compilador la informacion de como se va a usar objeto, esto no solo permite una mejor optimización de tu código, sino que tambíen te permite realizar verificaciones. En general (usando gcc) los attibutos se pueden especificar para funciones, variables, y tipos. La información puede encontrarse visitando los documentos en-linea del sitio web de GCC buscando las secciones relevantes que hablen acerca de atributos.
A menos de que ya hayas tropezado con esto antes, probablemente pensabas que la primera linea de tu main() es la primera linea de código que se ejecuta cuando tu ejecutable correo. Esto no es verdad. Hay un número de funciones que corren antes de que se llame a tu main() Entonces despues de que tu main() termina, también se hace la llamada a un numero de adiciones de rutinas de limpieza (clean-up). Tu main() es solo unos de muchas funciones que el cargador debe ejecutar.
gcc te permite especificar funciones este deberia llamarlas durante la fase antes de main() y también se llaman durante la fase despues de que realiza. main() El siguiente código demuestra y sirve como ejemplo de como especificar atributos en funciones.
/*
* AUTHOR: Trevor Woerner
* START DATE: 13 August 2003 - 12:29:41 PM
* MODIFIED: 05 September 2003 - 04:48:48 PM
* FILENAME: ctor_dtor.c
* PURPOSE: Example of specifying function attributes.
*
* Copyright (C) 2003 Trevor Woerner
*/
#include <stdio.h>
void my_ctor (void) __attributo__ ((constructor));
void my_dtor (void) __attributo__ ((destructor));
void
my_ctor (void)
{
printf ("hola antes de main()\n");
}
void
my_dtor (void)
{
printf ("adios despues de main()\n");
}
int
main (void)
{
printf ("hola\nadios\n");
return 0;
}
|
este código nos da como producto:
[trevor]$ ./ctor_dtor
hola antes de main()
hola
adios
adios depues de main()
|
| <<< Anterior | Inicio | Siguiente >>> |
| Compilador | Sección de diseño de Objetos |