Cómo utilizar el preprocesador de C
El preprocesador es una herramienta que nos ayuda mucho a la hora de programar con C. Forma parte del Estándar C, al igual que el lenguaje, el compilador y la librería estándar.
Analiza nuestro programa y se asegura de que el compilador obtenga todo lo que necesita antes de continuar con el proceso.
¿Qué hace en la práctica?
Por ejemplo, busca todos los archivos de encabezado que incluye con el#include
directiva.
También mira cada constante que definiste usando#define
y lo sustituye por su valor real.
Eso es solo el comienzo, y mencioné esas 2 operaciones porque son las más comunes. El preprocesador puede hacer mucho más.
Te diste cuenta#include
y#define
tener un#
¿al principio? Eso es común a todas las directivas del preprocesador. Si una línea comienza con#
, de eso se encarga el preprocesador.
Condicionales
Una de las cosas que podemos hacer es usar condicionales para cambiar cómo se compilará nuestro programa, dependiendo del valor de una expresión.
Por ejemplo, podemos comprobar si elDEBUG
constante es 0:
#include <stdio.h>
const int DEBUG = 0;
int main(void) {
#if DEBUG == 0
printf(“I am NOT debugging\n”);
#else
printf(“I am debugging\n”);
#endif
}
Constantes simbólicas
Podemos definir unconstante simbólica:
#define VALUE 1
#define PI 3.14
#define NAME "Flavio"
Cuando usamos NAME o PI o VALUE en nuestro programa, el preprocesador reemplaza su nombre con el valor, antes de ejecutar el programa.
Las constantes simbólicas son muy útiles porque podemos dar nombres a los valores sin crear variables en el momento de la compilación.
Macros
Con#define
también podemos definir unmacro. La diferencia entre una macro y una constante simbólica es que una macro puede aceptar un argumento y normalmente contiene código, mientras que una constante simbólica es un valor:
#define POWER(x) ((x) * (x))
Observe los paréntesis alrededor de los argumentos, una buena práctica para evitar problemas cuando se reemplaza la macro en el proceso de precompilación.
Entonces podemos usarlo en nuestro código de esta manera:
printf("%u\n", POWER(4)); //16
La gran diferencia con las funciones es que las macros no especifican el tipo de sus argumentos o valores de retorno, lo que puede resultar útil en algunos casos.
Si está definido
Podemos comprobar si se define una constante simbólica o una macro usando#ifdef
:
#include <stdio.h>
#define VALUE 1
int main(void) {
#ifdef VALUE
printf("Value is defined\n");
#else
printf("Value is not defined\n");
#endif
}
También tenemos#ifndef
para comprobar lo contrario (macro no definida).
También podemos usar#if defined
y#if !defined
hacer la misma tarea.
Es común envolver un bloque de código en un bloque como este:
#if 0
#endif
para evitar temporalmente que se ejecute, o para utilizar una constante simbólica DEBUG:
#define DEBUG 0
#if DEBUG
//code only sent to the compiler
//if DEBUG is not 0
#endif
Constantes simbólicas predefinidas que puede utilizar
El preprocesador también define una serie de constantes simbólicas que puede utilizar, identificadas por los 2 guiones bajos antes y después del nombre, que incluyen:
__LINE__
se traduce a la línea actual en el archivo de código fuente__FILE__
se traduce al nombre del archivo__DATE__
se traduce en la fecha de compilación, en elMmm gg aaaa
formato__TIME__
se traduce en el tiempo de compilación, en elhh:mm:ss
formato
Descarga mi gratisManual de C
Más tutoriales de clang:
- Introducción al lenguaje de programación C
- C Variables y tipos
- C Constantes
- Operadores C
- C Condicionales
- Cómo trabajar con bucles en C
- Introducción a las matrices C
- Cómo determinar la longitud de una matriz en C
- Introducción a las cadenas C
- Cómo encontrar la longitud de una cuerda en C
- Introducción a los punteros C
- Recorriendo una matriz con C
- Booleanos en C
- Introducción a las funciones C
- Cómo usar NULL en C
- Conceptos básicos de E / S en C
- Comillas dobles vs comillas simples en C
- Cómo devolver una cadena de una función C
- Cómo resolver la advertencia de función de biblioteca que declara implícitamente en C
- Cómo verificar el valor de un carácter en C
- Cómo imprimir el carácter de porcentaje usando `printf ()` en C
- Modificadores y especificadores de conversión de C
- Cómo acceder a los parámetros de la línea de comando en C
- Alcance de las variables en C
- ¿Puedes anidar funciones en C?
- Variables estáticas en C
- C Variables globales
- La palabra clave typedef en C
- C tipos enumerados
- Estructuras C
- Archivos de encabezado C
- El preprocesador de C