[C con Clase] Programación modular.

Steven Davidson srd4121 en njit.edu
Vie Mayo 21 15:13:25 CEST 2010


Hola Jorge,

Jorge Vega Sanchez wrote:
> Oye he estado mirnado el ejemplo que me pusiste y o soy muy estupido
> o lo intento aplicar en una aplicación mia y me dice que redefino
> variables.
> 
> No entiendo nada.
> 

Bueno, la verdad es que era sólo un ejemplo y de hecho lo escribí de 
memoria sin mucho miramiento. Veo que hace falta cambiar algunas cosas 
en tres ficheros. Haz esto:

// codigo01.h

#ifndef CODIGO01_H
#define CODIGO01_H

extern int g_num;
extern float g_real;

#endif


// codigo02.h

#ifndef CODIGO02_H
#define CODIGO02_H

#include "codigo01.h"

struct punto4d { double x,y,z,w; };

extern punto4d g_origen;

#endif


// codigo02.cpp

#include "codigo02.h"

punto4d g_origen = { 0.0, 0.0, 0.0, 1.0 };


Podríamos cambiar "codigo01.cpp" para #incluir su cabecera, pero tal y 
como está en el ejemplo, este proyecto se podrá construir sin problemas. 
En general, debería quedar así:

// codigo01.cpp

#include "codigo01.h"

int g_num = 10;
float g_real = -.5009;


El problema anterior es que #incluimos los ficheros de cabecera varias 
veces. Para que no existan inclusiones múltiples del mismo fichero en 
una sola unidad de traducción (versión final del código fuente), usamos 
las directivas del precompilador para prevenir susodichas inclusiones.

Ahora debería funcionar correctamente. Espero que esto te oriente.

Steven





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