[C con Clase] FW: Ayuda: Como declaro variables en un proyecto?

Kenshin Himura sintahimura en msn.com
Vie Feb 16 23:28:08 CET 2007



> To: cconclase en listas.conclase.net> From: diegogeid en gmail.com> Date: Thu, 15 Feb 2007 23:37:46 -0600> Subject: Re: [C con Clase] Ayuda: Como declaro variables en un proyecto?> > El pasado 2007-02-15 13:37:47, D1e6o! escribió:> > Muchas gracias amigos.. realmente me sirvio.. pero no entendí del todo esto. > > Ahora tengo los mismos problemas con las funciones... me dice linker error: undefined reference to TiempoActual. Me sucede lo mismo... no se como declarar las funciones (lo mismo que antes pero no con variables)...> Muchas gracias de nuevo por leer y responder realmente me sirvió..!! Saludos..!> > (no esta funcionando la lista, no? no me llegan mensajes pero al meterme en la web de elistas me dice que ya estoy suscripto... y no esta ni en spam x las dudas)> > > D> El pasado 2007-02-14 04:23:52, Steven Davidson escribió:> D> Muchísimas gracias!!!! Es exactamente eso lo que buscaba... Y me sirvió por completo. REALMENTE GRACIAS..! SALUDOS!> D> SD> Hola Diego,> D> SD> El pasado 2007-02-14 03:27:29, D1e6o! escribió:> D> SD> D> Muchas gracias a ambos!!!> D> SD> D> No lo estoy haciendo bien... je. Lo que hice es siguiendo sus mensajes:> D> SD> D> En tempor.c> D> SD> D> #include <windows.h>> D> SD> D> // Ahora acá esta el problema. No se como declarar freq para poder utilizarla tanto en main como en tempor y que esta tenga el mismo valor, no que cree una variable para cada modulo> D> SD> D> DWORD TiempoActual(void)> D> SD> D> {> D> SD> D> LARGE_INTEGER cuenta;> D> SD> D> QueryPerformanceCounter(&cuenta);//retorna el valor en ticks> D> SD> D> //paso a milisegundos y lo retorno> D> SD> D> return ((DWORD) ((cuenta.QuadPart*1000 ) / freq.QuadPart));> D> SD> D> }> D> SD> D> > D> SD> D> char InitTimer(void)> D> SD> D> {> D> SD> D> if (!QueryPerformanceFrequency(&freq)) return(0);> D> SD> D> }> D> SD> D> En decla.h> D> SD> D> #ifndef _DECLA> D> SD> D> #define _DECLA> D> SD> D> DWORD GetTimer(void);> D> SD> D> char InitTimer(void);> D> SD> D> #endif> D> SD> D> En main.cpp> D> SD> D> ...> D> SD> D> #include "decla.h"> D> SD> D> ...> D> SD> D> LARGE_INTEGER freq;> D> SD> D> Lo que no se es como declarar LARGE_INTEGER freq en tempor.c para que sea utlilizada con el mismo valor que en main.cpp y la pueda utilizar tanto en rutinas de main como de temp, porque si la declaro en decla.h e incluyo decla.h en tempo.c ¿no tiene un valor distinto para cada modulo?> D> SD> D> Porque los errores son:> D> SD> D> In function `TiempoActual':> D> SD> D> freq undeclared (first use in this function)> D> SD> D> (Each undeclared identifier is reported only once for each function it appears in.)> D> SD> D> In function `InitTimer':> D> SD> D> freq undeclared (first use in this function)> D> SD> D> Por otro lado si vuelvo a declarar freq en tempo (cosa que creo que está mal porque tendría un valor en ese modulo y otro en otro) me da otro error: [Linker error] undefined reference to `TiempoActual()'> D> SD> D> Cual sería la declaración correcta de variables en los distintos módulos? Muchas Gracias...! (siempre esquivo usar mas de un archivo fuente porque tengo esos problemas.. :( )> D> SD> El problema es con el enlazador, como ya has notado. Lo que tienes que hacer es indicar al enlazador que tal variable es común y que será compartida. Para esto, tienes que indicar 'extern' como modificador para la declaración. Esto es,> D> SD> // decla.c> D> SD> extern LARGE_INTEGER freq;> D> SD> // tempor.c> D> SD> extern LARGE_INTEGER freq;> D> SD> // main.c> D> SD> LARGE_INTEGER freq; // Definimos aquí la variable> D> SD> Ahora la variable 'freq' existe en "main.c", mientras que para los otros ficheros fuentes, la variable realmente es una referencia para el enlazador. En otras palabras, sólo existe una sola variable 'freq'.> D> SD> Espero que esto te sirva.> D> SD> Steven> D> SD> _______________________________________________> D> SD> Lista de correo Cconclase Cconclase en listas.conclase.net> D> SD> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net> D> SD> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ> D> _______________________________________________> D> Lista de correo Cconclase Cconclase en listas.conclase.net> D> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net> D> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ> _______________________________________________> Lista de correo Cconclase Cconclase en listas.conclase.net> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
_________________________________________________________________
Llama a tus amigos de PC a PC: ¡Es GRATIS!
http://get.live.com/messenger/overview
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070216/3ef9826f/attachment.html>


Más información sobre la lista de distribución Cconclase