[C con Clase] No entiendo constantes definidias.

Steven Davidson steven en conclase.net
Jue Mayo 17 18:53:49 CEST 2007


Hola Abraxas,

El pasado 2007-05-17 15:17:50, ERVA escribió:

E> Hola, estoy tratando de enteder un código que me pasaron (¡que lío!) pero me encuentro en algunos archivos de cabeceras (*.h) como de implementación (*.c; *.cpp) una constante (USE_THIS). Está constante la utilizan como sigue:
E> #ifndef USE_THIS
E> // ...
E> #else
E> // ...
E> #endif
E> ó 
E> #ifdef USE_THIS
E> // ...
E> #endif
E> Lo que me tiene vuelto "loco" es que no encuentro donde esta definido esa constante, por lo poco que se, las constantes son definidas en los archivos cabeceras.
E> ¿Como es posible usar una constante sin estar definido anticipadamente?
E> Estoy desarrollando en C++ Builder.

Tienes razón al esperar que las constantes se definan en los ficheros de cabecera. Como no hemos visto algo más de código, no te puedo dar una solución precisa.

Tomando el código que has presentado, estas directivas condicionales no requieren que la constante exista. Por ejemplo,

#ifndef USE_THIS
...
#endif

La constante 'USE_THIS' puede o no existir. Obviamente, la lógica de la precompilación cambia si se definió antes o no.

Si no has encontrado una #definición de 'USE_THIS', en todos los ficheros del proyecto, entonces revisa las opciones del proyecto, ya que se puede definir constantes directamente desde el compilador. Puedes exportar el proyecto a un fichero MAKE para ver las opciones con mayor claridad, pero también puedes ver la misma información en XML eligiendo "Project->Edit Option Source". Bajo la "categoría" USERDEFINES tengo '_DEBUG' y bajo SYSDEFINES tengo otras constantes o símbolos.

Si tampoco encuentras la #definición, entonces sospecho que no es tremendamente importante, especialmente si no se usa 'USE_THIS' en el resto del código. Comprueba que el código dentro de las directivas condicionales es importante o incluso #definen 'USE_THIS'.


Espero que esto te guíe.

Steven


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