Espacios de nombres
Variantes
Acciones

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.

Contenido

[editar] 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.

[editar] 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, #elif y #endif).
  • reemplazar las macros de texto, posiblemente encadenando o citando identificadores (controlado por las directivas #define y #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:

[editar] Anotaciones

  1. 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 #warning que emite un mensaje definido por el usuario durante la compilación.

[editar] 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

[editar] Véase también

Documentación de C++ para Preprocesador