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

Steven Davidson steven en conclase.net
Mar Feb 13 10:28:22 CET 2007


Hola Diego,

El pasado 2007-02-13 07:44:32, D1e6o! escribió:

D> Hola amigos, nuevamente acá estoy... Bueno, esta ves con una duda que no es
D> ningún problema para uds... Estoy programando en winapi y me encuentro con
D> un problema no muy complejo pero molesto: no se como declarar las variables
D> en otros archivos del mismo proyecto, así como tampoco las funciones para
D> hacer que se utilizen en todos los archivos del proyecto. Resulta muy
D> molesto y engorroso estar buscando en un solo archivo cuando este crece por
D> una cantidad alta de funciones.
D> Creo un proyecto, le agrego archivos, pero al querer utilizarlos en una
D> función o variable que se encuentra en otro archivo que no es el de la
D> funcion que quiero llamar no la encuentra. Se que debo declararlas, pero no
D> se como...
D> No se como hacer para que estén disponibles para todos algunas variables así
D> como también funciones :S
D> Alguien puede ayudarme? Al menos un ejemplo simple... aver que sale.. je

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,

// func.h

#ifndef _FUNC_H_
#define _FUNC_H_
...
#endif

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.

Para ciertos compiladores, puedes usar la directiva #pragma combinada con 'once'. Esto es,

// func.h

#pragma once
...

Con esto el contenido del fichero es incluido una sola vez, ignorando subsiguientes inclusiones.


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.

Steven


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