Preprocessor
From cppreference.net
<
c
El preprocesador se ejecuta en la fase de traducción 4 , antes de la compilación. El resultado del preprocesamiento es un archivo único que luego se pasa al compilador real.
Contenidos |
Directivas
Las directivas de preprocesamiento controlan el comportamiento del preprocesador. Cada directiva ocupa una línea y tiene el siguiente formato:
-
#carácter -
instrucción de preprocesamiento (una de
define,undef,include,if,ifdef,ifndef,else,elif,elifdef,elifndef(desde C23) ,endif,line,embed(desde C23) ,error,warning(desde C23) ,pragma) [1] - argumentos (depende de la instrucción)
- salto de línea.
La directiva nula (
#
seguida de un salto de línea) está permitida y no tiene efecto.
Capacidades
El preprocesador tiene las capacidades de traducción de archivos fuente:
-
compilación condicional
de partes del archivo fuente (controlada por las directivas
#if,#ifdef,#ifndef,#else,#elif,#elifdef,#elifndef(desde C23) y#endif). -
reemplazo
de macros de texto concatenando o citando identificadores (controlado por las directivas
#definey#undef, y los operadores#y##) -
inclusión
de otros archivos (controlada por la directiva
#includey verificada con__has_include(desde C23) ) -
generar un
error
o una
advertencia
(desde C23)
(controlado por la directiva
#erroro#warningrespectivamente (desde C23) )
Los siguientes aspectos del preprocesador pueden ser controlados:
-
comportamiento definido por la implementación
(controlado por la directiva
#pragmay el operador_Pragma(desde C99) ) -
información de nombre de archivo y línea
disponible para el preprocesador (controlado por las directivas
#line)
Notas al pie
- ↑ Estas son las directivas definidas por el estándar. El estándar no define el comportamiento para otras directivas: pueden ser ignoradas, tener algún significado útil o hacer que el programa esté mal formado. Incluso si se ignoran de otro modo, se eliminan del código fuente cuando el preprocesador termina. Una extensión no estándar común es la directiva #warning que emite un mensaje definido por el usuario durante la compilación. (hasta C23)
Ejemplo
|
Esta sección está incompleta
Razón: sin ejemplo |
Referencias
- Estándar C23 (ISO/IEC 9899:2024):
-
- 6.10 Directivas de preprocesamiento (p: TBD)
- Estándar C17 (ISO/IEC 9899:2018):
-
- 6.10 Directivas de preprocesamiento (p: 117-129)
- Estándar C11 (ISO/IEC 9899:2011):
-
- 6.10 Directivas de preprocesamiento (p: 160-178)
- Estándar C99 (ISO/IEC 9899:1999):
-
- 6.10 Directivas de preprocesamiento (p: 145-162)
- Estándar C89/C90 (ISO/IEC 9899:1990):
-
- 3.8 Directivas de preprocesamiento
Véase también
|
Documentación de C
para
Símbolos de Macro Predefinidos
|
|
|
Documentación de C
para
Índice de Símbolos de Macro
|
|
|
Documentación de C++
para
Preprocesador
|