Página 1 de 1
Lio con #define
Publicado: Mar May 03, 2016 4:39 pm
por bingen
Buenas XTeam, a ver si este poequeño lio tiene solución.
Tengo un subproyecto con un trozo de código que para evitar que se compile en ciertos casos está metido en un
#ifndef XXXXX
...............
#else
...............
#endif
Si hago el #define XXXXX en el subproyecto perfecto no compila este código, pero si lo hago en el proyecto principal que es donde lo necesito me lo compila y me da los errores que quiero evitar al compilar.
Algun truqui?
Gracias y salu2.
Re: Lio con #define
Publicado: Mié May 04, 2016 9:58 am
por ignacio
Cada proyecto es responsable de la compilación de sus módulos independientemente de que sea un subproyecto o un proyecto principal. Si quieres controlar cuando es iniciado su proceso de compilación desde un proyecto superior te sugiero que utilices otro DEFINE para ello y utilices varias lineas #IFDEF.
Saludos
Re: Lio con #define
Publicado: Mié May 04, 2016 7:56 pm
por jfgimenez
Bingen,
Respuesta corta: me temo que no hay ningún truco.
Respuesta larga: cuando tienes un subproyecto, lo normal es que sea una librería o una dll, y de una forma u otra está ligada al proyecto principal. Si ese mismo subproyecto está presente en distintos proyectos principales, no se crean distintas librerías ni dlls, sino que el subproyecto genera siempre un único fichero de salida. Y ahí es donde está el problema.
Dicho de otra forma, si utilizas un #ifdef dentro del código del subproyecto, no puedes cambiar la condición en función del proyecto principal, porque si no, al compilar otro de los proyectos principales te va a coger código incorrecto. Ten en cuenta que Xailer "recuerda" qué módulos necesita recompilar y cuales no, así que, salvo que lo fuerces con Alt+F9, no se puede garantizar que se va a recompilar un módulo determinado, tanto si tiene un #ifdef como si no.
Mi consejo es que si tienes cierto código que debe estar presente o no en función del proyecto principal, entonces lo mejor es meter ese código en dicho proyecto principal. En todo caso, podrías añadir el .prg en cuestión a cada uno de los proyectos donde lo necesites, siempre que el directorio obj de cada proyecto sea diferente, para evitar que el .o correspondiente a un proyecto termine siendo enlazado en otro proyecto.
Re: Lio con #define
Publicado: Lun May 09, 2016 1:21 pm
por bingen
Muchas gracias a ambos, alto y claro....
Ya me parecía mucho pedir.
Salu2.