Preprocesador
De cppreference.com
< c
El preprocesador se ejecuta en la fase de traducción 4, antes de la compilación. El resultado del preprocesamiento es un único archivo que luego se pasa al compilador real.
Directivas
Las directivas de preprocesamiento controlan el comportamiento del preprocesador. Cada directiva ocupa una línea y tiene el siguiente formato:
- un caracter
# - una instrucción de preprocesamiento (una de
define,undef,include,if,ifdef,ifndef,else,elif,endif,line,error,pragma) [1] - argumentos (depende de la instrucción)
- salto de línea
La directiva null (# seguida de un salto de línea) está permitida y no tiene ningún efecto.
Capacidades
El preprocesador tiene las capacidades de traducción del archivo fuente:
- compilar condicionalmente partes del archivo fuente (controlado por las directivas
#if,#ifdef,#ifndef,#else,#elify#endif). - reemplazar las macros de texto, posiblemente encadenando o citando identificadores (controlado por las directivas
#definey#undef, y los operadores#y##) - incluir otros archivos (controlado por la directiva
#include) - causar un error (controlado por la directiva
#error)
Se pueden controlar los siguientes aspectos del preprocesador:
- el comportamiento definido en la implementación (controlado por la directiva
#pragmay el operador_Pragma(desde C99)) - nombre de archivo e información de línea disponible para el preprocesador (controlado por las directivas
#line)
Anotaciones
- ↑ Estas son las directivas definidas por el estándar. El estándar no define el comportamiento de otras directivas: pueden ser ignoradas, tener algún significado útil, o hacer que el programa esté mal formado. Incluso si se ignoran, se eliminan del código fuente cuando el preprocesador está listo. Una extensión común no estándar es la directiva
#warningque emite un mensaje definido por el usuario durante la compilación.
Referencias
- Standard C11 (ISO/IEC 9899:2011):
- 6.10 Preprocessing directives (p: 160-178)
- Standard C99 (ISO/IEC 9899:1999):
- 6.10 Preprocessing directives (p: 145-162)
- Standard C89/C90 (ISO/IEC 9899:1990):
- 3.8 PREPROCESSING DIRECTIVES
Véase también
Documentación de C++ para Preprocesador
|