C/Visual C - inclusión condicional

 
Vista:

inclusión condicional

Publicado por Franco Cedillo (36 intervenciones) el 23/09/2005 12:49:15
Hola,

Tengo una consulta sobre la inclusión condicional.
En más de un archivo *.h he incluido "#include Lib1.h"
Y para que no hallan errores uso #if defined...

Pero no funciona esta solució

Los tres archivos *.h

// Lib1.h

/* variables globales */

int a,b,c;


// Lib2.h

#if ! defined (CONTROL)
#include "Lib1.h"
#define CONTROL 0
#endif

// inicializa variables globales

void func1(void)
{
a=1;
b=2;
c=3;
}

// Lib3.h

#if ! defined (CONTROL)
#include "Lib1.h"
#define CONTROL 0
#endif

// inicializa otra vez

void func2(void)
{
a=28;
b=35;
c=47;
}

//este es el archivo principal

#inlcude <stdio.h>
#include <iostream.h>
#include "Lib2.h"
#include "Lib3.h"

void main(void)
{
func1();
printf("a=%d b=%d c=%d",a,b,c);
func2();
printf("a=%d b=%d c=%d",a,b,c);
}

Voy a probar otros ejemplos
esto lo realizo en el ide borland c++ v3.1
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:inclusión condicional

Publicado por fernando.gomez (1603 intervenciones) el 26/09/2005 06:24:03
Más bien la inclusión condicional debería ir en los archivos H:

// Lib1.h

#ifndef LIB1_H
#define LIB1_H

/* variables globales */

int a,b,c;

#endif

La primera vez que hagas el #include de lib1.h, se incluye, la segunda vez, ya no. Tonz en lib2.h, lib3.h haces el #include normal, y en el cepepé, también lo haces normal.

En VC++ tienes la opción de agregar la sentencia #pragma once a los headers, y entonces el compilador hace todo el trabajo por tí. Quizás en BC haya algo parecido, y si la portabilidad no te preocupa, creo que sería mejor emplear dicha directiva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar