Preprocesador
En C/C++ el preprocesamiento se produce antes de compilar un programa. Se puede leer un proceso completo durante el preprocesamiento, compilación y vinculación en C/C++.
Algunas acciones posibles en el preprocesamiento son:
- Inclusión de otros archivos en el archivo que se esta compilando.
- Definición de constantes simbólicas y macros
- Compilación condicional de código de programa o segmento de código.
- Ejecución condicional de directivas preprocesador.
Todas las directivas de preprocesador comienzan con el operador #
y solo los caracteres de espacio en blanco pueden aparecer antes de una directiva de preprocesador en una línea.
Macros
Básicamente los macros son alias que podemos incluir en nuestro código el cual, al momento de compilar, será reemplazado por lo que hayamos definido.
#include <iostream>
#include <cstdio>
#define FIVE 5
#define HELLO_STRING "Hello, World!"
#define SUM(x,y)(x + y)
using namespace std;
int main() {
int a = FIVE;
int b = 10;
int sum = SUM(a,b);
cout << "Sum of 5 + 10 is: " << sum << endl;
cout << HELLO_STRING << endl;
return 0;
}
//-> Sum of 5 + 10 is: 15
//-> Hello, World!
Inclusión (Include)
Este tipo de directiva de preprocesador le dice al compilador que incluya un archivo en el programa de código fuente, existen dos tipos de archivos que pueden ser incluidos por el usuario en el programa.
- Archivo de encabezado o archivo estándar - Estos archivos contienen definiciones de función predefinida en estándar. El sintaxis es el siguiente
#include <file_name>
- Archivo definidos por usuario - Son archivos definidos por el usuario, estos pueden ser incluido siguiendo el siguiente sintaxis
#include "file_name"
Compilación condicional
Son directivas que ayudan a compilar una parte especifica del programa o a saltarse la compilación de alguna parte especifica del programa en función de alguna condiciones. Esto se puede hacer con la ayuda de dos comandos de pre procesamientos ifdef
y endif
#include <iostream>
#define FOO
#ifdef FOO
#define NUMBER 47
#else
#define NUMBER 2
#endif
using namespace std;
int main() {
cout << "Number is: " << NUMBER << endl;
return 0;
}
//-> Number is: 47