Stratos: Punto de Encuentro de Desarrolladores

¡Bienvenido a Stratos!

Acceder

Foros





Fucniones C ( Arranque, Parada )

Iniciado por Degiik, 21 de Mayo de 2006, 10:59:58 AM

« anterior - próximo »

Degiik

 Hola,

Se que hace algun tiempo ( quizas dos años ) use un par de funciones de C predefinidas que se ejecutaban antes y después de lanzar la main. No recuerdo cuales son, ni encuentro en sant google. Alguien me puede ayudar ?

Un saludo.
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

sés

 Antes no recuerdo nada, pero tampoco lo veo necesario. Si quieres que algo se ejecute antes del main()... pues ponlo en el main() antes que nada.

Para después tienes
int atexit(void (*func)(void));
Que ejecuta la función que especifiques antes de salir del programa desde cualquier punto (con un exit( -1 ) por ejemplo).

Si lo haces varias veces, al salir se ejecutarían en orden inverso.
Soy indeciso... ¿o no?

Degiik

 Asias sés,

Pero no es la que busco. Concretamente necesito una funcion que se llama después de que se ejecuten los destructores de los objetos. atexit se ejecuta antes.

Nota: creo recordar que empezaba por _ o __ el nombre de la función, y es seguro que hablo de ella ( como mínimo la de arranque ) MChiz en uno de sus post ( q no trataba sobre ese tema, así que  por eso me puedo volver loco buscando ).

Un saludo.
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

LC0

 No se que función será esa, pero si usas gcc, siempre puedes usar la opción -S para que te devuelva el código en ensamblador y así buscar los últimos calls que se hacen en main.

LC0

 No se que función será esa, pero si usas gcc, siempre puedes usar la opción -S para que te devuelva el código en ensamblador y así buscar los últimos calls que se hacen en main.

zupervaca

 Si hablas de objetos me imagino que usaras c++, entonces lo que puedes hacer es crear una clase estatica global y en su destructor hacer lo que quieras, si tienes mas de una clase estatica esta debe ser la primera en crearse para ser la ultima en destruirse.

zupervaca

 Si hablas de objetos me imagino que usaras c++, entonces lo que puedes hacer es crear una clase estatica global y en su destructor hacer lo que quieras, si tienes mas de una clase estatica esta debe ser la primera en crearse para ser la ultima en destruirse.

sés

Soy indeciso... ¿o no?

sés

Soy indeciso... ¿o no?

Degiik

 Yo lo q pretendo es ejecutar código depués de que se ejecuten los destructores de todos los objetos de la applicación. Creo q tiene que existir algo al respecto predefinido, sin hacer paranoias. Si alguien puede ayudar, lo agradeceré enormemente.

Un saludo.
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

zupervaca

 No es paranoia :lol:, es todos los compiladores se comportan de la misma manera ya que es un estandar la forma de creacion y destruccion de objetos

Degiik

Cita de: "zupervaca"Si hablas de objetos me imagino que usaras c++, entonces lo que puedes hacer es crear una clase estatica global y en su destructor hacer lo que quieras, si tienes mas de una clase estatica esta debe ser la primera en crearse para ser la ultima en destruirse.
"...una clase estatica global..."  O_O


Insisto en que debe haber algun forma prevista.
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

zupervaca

 Ejemplo:

class UltimaClase
{
public:
   ~UltimaClase()
   {
         // Haces lo que quieras
   }
};
// Esto es una clase estatica global, es decir, accedes a ella desde cualquier parte que se haya incluido
static UltimaClase ultimaClase;

// Mas declaraciones
....

int main()
{
   // Esto es un miembro estatico local, es decir, solo se puede acceder a ella dentro de la funcion main
   static int pepe = 0;

   return 0;
}

Con esto ya te funciona lo que quieres, ahora sigue poniendo caras majete :P

Degiik

 a.- No me llames majete
b.- Que difencia hay entre una clase global, i una clase estatica global ?  :ph34r:

Sigo en mis trece... q tiene q haber algo.
egiik: h-O-5 hoja/ingestión 100mo Vida suspendida ( 1 día )

Jare

Cita de: "Degiik"Yo lo q pretendo es ejecutar código depués de que se ejecuten los destructores de todos los objetos de la applicación. Creo q tiene que existir algo al respecto predefinido, sin hacer paranoias.
No lo hay.






Stratos es un servicio gratuito, cuyos costes se cubren en parte con la publicidad.
Por favor, desactiva el bloqueador de anuncios en esta web para ayudar a que siga adelante.
Muchísimas gracias.