La compilación condicional es una característica de los lenguajes que usan preprocesador y permite incluir un determinado trozo de código en la compilación en función de una directiva de compilación. En xHarbour podemos definir una directiva de compilación usando el flag -d al invocar al compilador, de esta manera:
xharbour miprograma.prg -d__directiva__
Dentro de nuestro programa usaremos la sentencia #ifdef para indicar que acción ejecutaremos en caso de tener definida la directiva de compilación:
#ifdef __directiva__Accion1() #else Accion2() #endif
Si al compilar el programa tendremos definida la __directiva__ en el ejecutable unicamente se incluirá la llamada a Accion1(), mientras si no la tenemos definida sólo se incluirá la llamada a Accion2().La pregunta del millón es: ¿ en que difiere esto de usar una variable de nuestra clase aplicación o una variable global ? Pues que si hacemos esto estamos dejando rastro de lo que hacemos, en el ejecutable se incluye la sentencia condicional y se ejecuta cada vez que corre la aplicación. Con la compilación condicional no introducimos la sentencia condicional en el ejecutable, sino unicamente la acción deseada en función de si la directiva está o no presenteal compilar.Usando la compilación condicional es muy sencillo crear versiones distintas de un mismo programa con un mínimo esfuerzo, con la particularidad de que no dejamos ningún rastro en nuestro programa de que tenemos distintas versiones del mismo.