Namespaces
Variants

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 #define y #undef , y los operadores # y ## )
  • inclusión de otros archivos (controlada por la directiva #include y verificada con __has_include (desde C23) )
  • generar un error o una advertencia (desde C23) (controlado por la directiva #error o #warning respectivamente (desde C23) )

Los siguientes aspectos del preprocesador pueden ser controlados:

Notas al pie

  1. 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

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