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.
In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Lio con #define
Lio con #define
BiSoft Desarrollo de software profesional
http://www.bisoft.es
http://www.bisoft.es
- ignacio
- Site Admin
- Mensajes: 9447
- Registrado: Lun Abr 06, 2015 8:00 pm
- Ubicación: Madrid, Spain
- Contactar:
Re: Lio con #define
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
Saludos
Ignacio Ortiz de Zúñiga
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
[OZ Software]
https://www.ozs.es
--
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Re: Lio con #define
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.
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
Muchas gracias a ambos, alto y claro....
Ya me parecía mucho pedir.
Salu2.
Ya me parecía mucho pedir.
Salu2.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
http://www.bisoft.es