[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