UC3M

Grado en Ing. Telemática/Sist. Audiovisuales/Sist. de Comunicaciones

Arquitectura de Sistemas

Septiembre 2017 - Enero 2018

14.11. El Preprocesador

El preprocesador es un programa que forma parte del compilador y que prepara o modifica el código fuente antes de ser traducido a código binario. Los cambios los hace interpretando aquellas líneas del código que comienzan por el símbolo #. El uso de estas directivas son tan comunes en los programas en C que parece que forman parte del lenguaje, pero en realidad son parte de un lenguaje que sólo entiende el procesador. La siguiente figura ilustra como se procesa un fichero de código fuente en realidad por el compilador.

Como se puede comprobar, las dos líneas que comienzan por # han desaparecido, al igual que los comentarios. Al traductor a código binario le llega fichero sin ninguna directiva ni comentario.

El preprocesador puede ser utilizado de forma independiente del compilador mediante el comando cpp. Abre un terminal de comandos y consulta la página de manual de este comando. Como puedes comprobar, es un programa que puede procesar un amplio catálogo de directivas. De todas ellas, en este documento se describen las más utilizadas.

14.11.1. La directiva #include

La directiva #include debe ir seguida del nombre de un fichero y su efecto es de reemplazar esta línea en el código fuente por el contenido del fichero que se especifica. La siguiente figura ilustra un ejemplo de esta directiva.

Con esta directiva debes tener en cuenta lo siguiente:

  • Si el fichero que va a continuación de #include está rodeado por < y >, el preprocesador lo busca en los directorios internos del sistema. Esta versión se utiliza por tanto para incluir ficheros dados por el sistema.

  • Si el fichero está rodeado de doble comilla, entonces se busca en el directorio en el que se está compilando. Esta versión de la directiva se utiliza para incluir ficheros que ha escrito el usuario. La opción -L del compilador permite especificar una lista adicional de directorios en los que buscar este tipo de ficheros.

  • La extensión .h se suele utilizar para ficheros que se incluyen en un programa con esta directiva

  • Antes de incluir el contenido del fichero, se procesan las directivas contenidas en su interior. Esto permite que un fichero que se incluye en un programa incluya a su vez otros.

  • Este tipo de ficheros suele incluir definiciones que se necesitan en más de un fichero. En lugar de repetir estas definiciones en los ficheros de código (con extensión .c), se pasan a un fichero con extensión .h que se incluye en todos ellos.

  • Los ficheros incluidos con la directiva #include no se escriben en el comando que invoca al compilador. Su utilización la decide el preprocesador cuando encuentra la directiva #include.