Tutorial de Programación en C Parte 2 – Preprocesadores

En la primera parte de nuestra serie de tutoriales de programación en C, abordamos brevemente la etapa de preprocesamiento. En este tutorial, la trataremos con un poco más de detalle para que tengas una idea básica sobre ella antes de aprender otros aspectos de la programación en C.

El preprocesamiento suele ser la primera etapa de la compilación de un programa, en la que se procesa todo lo que empieza por «#». Tomemos un código de ejemplo básico.

#include <stdio.h>

int main (void)
{
    printf("\n Hello World \n");
    return 0;
}

Sí, se trata del mismo trozo de código que utilizamos en la primera parte de esta serie de artículos. En este caso, es la primera línea la que comienza con una almohadilla ‘#’. En términos sencillos, la línea ‘#include <stdio.h>’ se asegura de que el contenido del archivo de cabecera ‘stdio.h’ se incluya en este programa durante la compilación.

Lo que ocurre en la fase de preprocesamiento es que esta línea se sustituye por el contenido real del archivo de cabecera. Este es el aspecto del código después de la etapa de preprocesamiento:

Archivo de código C

Como puedes ver, todo lo que hay por encima de las pocas líneas de código que hemos escrito (mira la parte inferior de la captura de pantalla) es el contenido de stdio.h. Ahora bien, no voy a entrar en detalles sobre cómo he conseguido ver el código después del preprocesamiento, pero esto era para darte una idea clara de lo que ocurre durante el preprocesamiento.

Continuando, las líneas que incluyen un archivo de cabecera no son las únicas que comienzan con una almohadilla (#). También hay algo llamado Macros que también comienzan con #. Así que es importante hablar de ellas aquí (al menos de sus aspectos básicos).

Una macro no es más que un nombre (normalmente en mayúsculas) que se refiere a un trozo de código. Las macros se definen mediante la directiva ‘#define’. Aquí tienes un ejemplo:

#include <stdio.h>
#define PRINT_HELLO_WORLD printf("\n Hello World \n");
int main (void)
{
    PRINT_HELLO_WORLD
PRINT_HELLO_WORLD
    return 0;
}

Así que definimos una macro IMPRIMIR_HELLO_LAVADO con el valor printf(«\NHola Mundo \N»);. Ahora, siempre que utilicemos este nombre de macro en el código, se sustituirá por su valor durante la fase de preprocesamiento. Este es el código después del preprocesamiento:

Macro del programa en C

Como ves, las dos apariciones de la macro se han sustituido por su valor en la fase de preprocesamiento. Por supuesto, hay otros detalles relacionados con las macros que debes conocer para utilizarlas con éxito. Hablaremos de esos detalles en una parte de esta serie de tutoriales dedicada a las macros.

Continuando, el tercer tipo de líneas que comienzan con # son #ifdef y #endif. Se utilizan para la compilación condicional. Para que te hagas una idea, hay ocasiones en las que no querrás que una parte del código se compile en función de una determinada condición, es en casos como estos, cuando se utilizan estas directivas.

He aquí un ejemplo:

#include <stdio.h>
#define PRINT_HELLO_WORLD printf("\n Hello World \n");

int main (void)
{
#ifdef CONDITION
    PRINT_HELLO_WORLD
#endif
    PRINT_HELLO_WORLD
    return 0;
}

En el código anterior, como ‘CONDITION’ no está definida en ningún sitio, la primera aparición de ‘PRINT_HELLO_WORLD’ se omitirá del código sólo en la fase de preprocesamiento. Aquí tienes la prueba:

Código de condición

Así que sólo puedes ver una sentencia printf después de la etapa de preprocesamiento.

Conclusión

En este tutorial, hemos hablado del preprocesamiento para dar a los principiantes de la programación en C una idea básica de lo que ocurre durante esta etapa. Ahora, pasa a la parte 3 para aprender más sobre los fundamentos de la programación en C.

También te podría gustar...