En C++, las directivas de precompilación son instrucciones especiales que el preprocesador, una etapa previa a la compilación, utiliza para modificar el código fuente antes de que el compilador lo procese.
- Inclusión de archivos: Permite incluir archivos de cabecera y otros archivos necesarios.
- Condiciones de compilación: Permite compilar diferentes partes del código dependiendo de ciertas condiciones.
- Definición de macros: Permite definir constantes y macros para simplificar el código.
Las directivas de precompilación son herramientas muy potentes, para gestionar la configuración del código. Sin embargo, también es muy frecuente que se abuse de ellas.
Consejo, usa las menores posibles, y únicamente cuando su uso sea indispensable
Sintaxis de las directivas de precompilación
Las directivas de precompilación en C++ son comandos que comienzan con el símbolo #
y son interpretadas por el preprocesador antes de que el código sea compilado.
Directivas de Inclusión de Archivos
#include
La directiva #include
se utiliza para incluir archivos de cabecera u otros archivos fuente en el archivo actual.
#include <archivo.h> // Incluye archivos de cabecera estándar
#include "archivo.h" // Incluye archivos locales
- Archivos Estándar: Los archivos incluidos con
<>
se buscan en los directorios estándar del sistema. - Archivos Locales: Los archivos incluidos con
""
se buscan en el directorio del archivo fuente actual.
#include <iostream> // Inclusión de la biblioteca estándar de entrada/salida
int main() {
std::cout << "Hola, Mundo!" << std::endl;
return 0;
}
En este ejemplo, #include <iostream>
incluye la biblioteca estándar de entrada/salida que proporciona la funcionalidad para imprimir en la consola.
Definición de macros
La directiva #define
se utiliza para definir macros, que son fragmentos de código o constantes que se sustituyen durante la etapa de preprocesamiento.
#define NOMBRE_MACRO valor
Veremos las macros en su propio artículo leer más ⯈
Condiciones de compilación
#ifdef
, #ifndef
, #if
, #else
, #elif
, #endif
Estas directivas se utilizan para incluir o excluir partes del código dependiendo de ciertas condiciones.
#define DEBUG
int main() {
#ifdef DEBUG
std::cout << "Modo de depuración activado" << std::endl;
#endif
return 0;
}
En este ejemplo, el mensaje “Modo de depuración activado” solo se imprimirá si DEBUG
ha sido definido.
Otras directivas importantes
#undef
La directiva #undef
se utiliza para deshacer la definición de una macro.
#undef NOMBRE_MACRO
Por ejemplo
#define MAX 100
#undef MAX
#define MAX 200
int main() {
std::cout << "El valor de MAX es " << MAX << std::endl;
return 0;
}
En este caso, MAX
se redefine de 100
a 200
antes de ser usado.