Skip to main content

¿Qué es la compilación condicional?

En la programación de computadoras, la compilación condicional describe la capacidad de un compilador de software o procesador de código fuente para incluir o ignorar ciertos comandos o bloques de código basados ​​en instrucciones específicas del lenguaje que técnicamente no son parte de la especificación del lenguaje de programación central. Los comandos que se utilizan para activar la compilación condicional en un programa a menudo se denominan directivas de preprocesador, aunque también pueden conocerse como directivas de compilación, comentarios condicionales o definiciones condicionales. Según el compilador o el lenguaje que se utilice, las directivas condicionales pueden ser variables o macros definidas por el usuario, o también pueden ser variables del sistema establecidas por el compilador o el sistema operativo. La compilación condicional se usa con frecuencia para configurar un solo conjunto de archivos de código fuente para que puedan compilarse en diferentes entornos o sistemas operativos sin tener que intercambiar o cambiar los archivos fuente.

Las definiciones condicionales que se utilizan para probar la compilación condicional pueden variar de un idioma a otro, pero generalmente son macros u otras expresiones de metadatos fuera del alcance de las variables normales del programa. En lenguajes como C, las variables generalmente son macros que son leídas por un preprocesador. La mayoría de las veces, el código fuente real del programa ejecutable no puede acceder a las macros, aunque existan en los mismos archivos fuente.

Las directivas que se utilizan para probar las variables condicionales definidas son rudimentarias y siguen la misma lógica que una declaración if-then. Las pruebas básicas que se pueden realizar para la compilación condicional son si un valor está definido, no está definido o, en algunos casos, si dos variables definidas son equivalentes. Las variables o macros en sí mismas generalmente no tienen ningún valor significativo, porque el acto de definirlas es lo que las directivas están buscando. Sin embargo, con algunos lenguajes y compiladores, el valor de una variable definida puede importar si se evalúa para el estado booleano.

Cuando un compilador encuentra directivas utilizadas para la compilación condicional, las directivas se evalúan para ver si se prueban como verdaderas o falsas. Si es verdadero, el código que sigue la directiva se compila normalmente; de lo contrario, el compilador omitirá por completo el código contenido en la directiva. Esto es diferente a las declaraciones de lógica condicional dentro del código del programa ejecutable en sí mismo porque, incluso si la lógica tiene un bloque de código que no se puede ejecutar, aún se interpretará y compilará en la mayoría de los casos. Con las directivas condicionales de preprocesador, el código omitido nunca se incluye, interpreta o compila. También se debe tener en cuenta que una vez que el preprocesador ha evaluado todas las variables y directivas condicionales, no se compilan con el resto del programa, ya que están destinadas únicamente a proporcionar instrucciones al compilador.

La compilación condicional se usa con mayor frecuencia para incluir o excluir código que es específico de un sistema operativo o entorno en particular. Esto significa que las bibliotecas que existen en un sistema operativo se pueden incluir condicionalmente si las directivas determinan que el programa se está compilando en ese sistema operativo. Alternativamente, las directivas también se pueden usar para incluir o excluir código basado en variables definidas por el usuario. Esto se puede hacer para que el código de depuración o creación de perfiles no se incluya en la versión final de un programa, o para que ciertas funciones se puedan habilitar o deshabilitar sin tener que mantener copias separadas del código.