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

D1e6o! diegogeid en gmail.com
Mie Feb 14 04:27:29 CET 2007


Muchas gracias a ambos!!!

No lo estoy haciendo bien... je. Lo que hice es siguiendo sus mensajes:


En tempor.c

#include <windows.h>

// 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

 DWORD TiempoActual(void)
 {
   LARGE_INTEGER cuenta;
   QueryPerformanceCounter(&cuenta);//retorna el valor en ticks
     //paso a milisegundos y lo retorno
   return ((DWORD) ((cuenta.QuadPart*1000 ) / freq.QuadPart));
 }
 
  char InitTimer(void)
 {
  if (!QueryPerformanceFrequency(&freq)) return(0);
 }

En decla.h

#ifndef  _DECLA
#define  _DECLA

DWORD GetTimer(void);
char InitTimer(void);

#endif

En main.cpp

...
#include "decla.h"
...
LARGE_INTEGER freq;

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?

Porque los errores son:

In function `TiempoActual':
freq undeclared (first use in this function)
(Each undeclared identifier is reported only once for each function it appears in.)
In function `InitTimer':
freq undeclared (first use in this function)

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()'

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.. :( )

Agradezco enormemente su ayuda! Un saludo..!

El pasado 2007-02-13 09:28:22, Steven Davidson escribió:
 
SD> Hola Diego,
SD> El pasado 2007-02-13 07:44:32, D1e6o! escribió:
SD> D> Hola amigos, nuevamente acá estoy... Bueno, esta ves con una duda que no es
SD> D> ningún problema para uds... Estoy programando en winapi y me encuentro con
SD> D> un problema no muy complejo pero molesto: no se como declarar las variables
SD> D> en otros archivos del mismo proyecto, así como tampoco las funciones para
SD> D> hacer que se utilizen en todos los archivos del proyecto. Resulta muy
SD> D> molesto y engorroso estar buscando en un solo archivo cuando este crece por
SD> D> una cantidad alta de funciones.
SD> D> Creo un proyecto, le agrego archivos, pero al querer utilizarlos en una
SD> D> función o variable que se encuentra en otro archivo que no es el de la
SD> D> funcion que quiero llamar no la encuentra. Se que debo declararlas, pero no
SD> D> se como...
SD> D> No se como hacer para que estén disponibles para todos algunas variables así
SD> D> como también funciones :S
SD> D> Alguien puede ayudarme? Al menos un ejemplo simple... aver que sale.. je
SD> Sugiero poner todas las declaraciones de variables, constantes, estructuras/clases, y funciones en los ficheros de cabecera (.h). Las definiciones van en sus respectivos ficheros fuentes (.cpp). Si el compilador te da errores de redefiniciones, entonces seguramente estás incluyendo el mismo fichero de cabecera más de una vez. Esto seguramente ocurre si lo haces explícitamente al igual que indirectamente a través de otro fichero de cabecera. Para asegurarte que el contenido del fichero de cabecera se incluye una sola vez, aconsejo usar las directiva del precompilador. Por ejemplo,
SD> // func.h
SD> #ifndef _FUNC_H_
SD> #define _FUNC_H_
SD> ...
SD> #endif
SD> Con esto nos cercioramos que este fichero es incluido la primera y única vez. Como la primera inclusión no existe la constante simbólica _FUNC_H_, la condición falla y se crea. Para posteriores inclusiones, la condición fallará, ya que la constante sí existe.
SD> Para ciertos compiladores, puedes usar la directiva #pragma combinada con 'once'. Esto es,
SD> // func.h
SD> #pragma once
SD> ...
SD> Con esto el contenido del fichero es incluido una sola vez, ignorando subsiguientes inclusiones.
SD> Si aún tienes problemas, es mejor que expongas los mensajes de error y de qué tipo (compilador o enlazador) al igual que las sentencias marcadas. Espero que esto te ayude.
SD> Steven
SD> _______________________________________________
SD> Lista de correo Cconclase Cconclase en listas.conclase.net
SD> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
SD> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


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