deportes
El preprocesador de C (cpp) es el preprocesador para el lenguaje de programación C. Es el primer programa invocado por el compilador y procesa directivas como #include, #define y #if. Estas directivas no son específicas de C. En realidad pueden ser usadas con cualquier tipo de archivo.
El preprocesador utiliza 4 etapas denominadas Fases de traducción. Aunque algunaimplementación puede elegir hacer alguna o todas las fases simultáneamente, debe comportarse como si fuesen ejecutadas paso a paso.
Índice [ocultar]
1 Fases
2 Ejemplos
2.1 Incluyendo archivos
2.2 Compilación condicional
2.3 Ejemplos de otros usos
3 Definición de macros y expansión
3.1 Precedencia
3.2 Evaluación múltiple de efectos colaterales
3.3 Concatenación de cadenas
3.4 Punto y coma3.5 Líneas múltiples
3.6 Entrecomillando los argumentos de las macros
3.7 Macros variables
4 Macros X
5 Errores y advertencias de compilación definidas por el usuario
6 Características del procesador específicas del compilador
7 Estándar de colocación de macros
8 Macros específicas del compilador predefinidas
9 Véase también
10 Referencias
11 Enlaces externos
Fases[editar]
Tokenizadoléxico - El preprocesador reemplaza la secuencia de trigrafos por los caracteres que representan.
Empalmado de líneas - Las líneas de código que continúan con secuencias de escape de nueva línea son unidas para formar líneas lógicas.
Tokenización - Reemplaza los comentarios por espacios en blanco. Divide cada uno de los elementos a preprocesar por un carácter de separación.
Expansión de macros ygestión de directivas - Ejecuta las líneas con directivas de preprocesado incluyendo las que incluye otros archivos y las de compilación condicional. Además expande las macros. Desde la versión de C de 1999 también gestiona los operadores #Pragma.
Ejemplos[editar]
Esta sección trata con más detalle ejemplos de uso del preprocesador de C. Es crucial que existan buenas prácticas de programacióncuando se escriben macros de C. Sobre todo cuando se trabaja en equipo.
Incluyendo archivos[editar]
La forma más común de usar el preprocesador es incluir otro archivo:
#include
int main (void)
{
printf ("¡Hola Mundo!\n");
return 0;
}
El preprocesador reemplaza la línea #include con el archivo de cabecera del sistema con ese nombre. En dicha cabecera se declara, entre otrascosas, la función printf(). Más concretamente donde se pone la directiva #include se sustituirá por el contenido completo del archivo 'stdio.h'.
También puede escribirse usando dobles comillas: #include "stdio.h". Originalmente esta distinción conseguía diferenciar entre los archivos de cabecera del sistema () y los de usuario (""). Los compiladores de C y los entornos de desarrollo actualesdisponen de facilidades para indicar dónde se encuentran los distintos archivos de cabecera. Sin embargo se sigue recomendando usar la misma nomenclatura por cuestiones de claridad en el código. La localización de los archivos de cabecera pueden ser indicados desde la línea de comandos o desde un archivo makefile para hacer el código más portable.
Se puede utilizar cualquier extensión para losarchivos de cabecera. Pero, por convención, se utiliza la extensión .h para los archivos de cabecera y .c para los archivos que no son incluidos por ningún otro. También pueden encontrarse otras extensiones. Por ejemplo, los archivos con extensión .def suelen ser archivos cuyo contenido está diseñado para ser incluido muchas veces.
#include normalmente obliga a usar protectores de #include o ladirectiva #pragma once para prevenir la doble inclusión, porque si se incluye más de 1 vez el mismo archivo, (dependiendo del contenido) puede causar que se intente declarar varias veces las mismas funciones o tipos de variable, lo que va a generar un error al compilar, esto se intenta prevenir de la siguiente forma:
#ifndef __ARCHIVO_H__
#define __ARCHIVO_H__
/*... declaraciones de...
Regístrate para leer el documento completo.