Disponible la nueva versión "donationware" 7.3 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


4.9.10  Operador de preproceso

§1  Sinopsis

Durante la primera fase de la compilación de un programa, el preprocesador ( 1.4.1) realiza ciertas modificaciones previas en el código fuente. Se trata de una auténtica traducción del código siguiendo unas pautas explicitadas en las denominadas directivas de preproceso [1]. Son sentencias que se sitúan normalmente al principio del código fuente, aunque legalmente pueden aparecer en cualquier punto de la unidad de compilación (tienen validez desde el punto de aparición hasta el final del fichero).

Por la razón anterior, se dice que estas directivas no respetan el ámbito, por lo que (en especial los #define) pueden presentar efectos colaterales no deseados en puntos alejados de los que el programador ha previsto.

§2  Las directivas de preproceso se identifican por ser líneas precedidas por el símbolo # que es el operador de preproceso. A menos que # esté incluido en una cadena alfanumérica o en un comentario, indica que lo que sigue es una directiva de preproceso o línea de control. # puede estar precedido o seguido por un separador (whitespace) excluyendo nueva línea (NL).


  Las directivas de preprocesado no necesitan punto y coma ( ; ) al final. Ejemplo:

#include <iostream>;       // L.1:  permisible
#include <iostream>        // L.2:  mejor!!

Nota: la línea 1, aunque permisible, puede dar un aviso de compilación con algunos compiladores. Concretamente el compilador Borland C++ 5.5 compila sin ningún aviso, mientras que MS Visual C++ 6.0 muestra un "Warning" ( 1.4):

Unexpected tokens following preprocessor directive - expected a newline...

Evidentemente el token al que se refiere es el punto y coma final, que es innecesario.


§3  El Estándar C++ soporta las directivas que se indican a continuación; todas ellas tienen un sentido definido. La última, #pragma, se ha previsto para que cada fabricante de compilador pueda inventar las suyas particulares sin que interfieran con las de otras implementaciones (si un compilador encuentra una de estas directivas y no sabe que hacer con ella, sencillamente la ignora). El sentido de las demás se indica en los epígrafes correspondientes.

# (directiva nula)

#define

#error

#if#elif#else#endif

#ifdef#ifndef

#import

#include

#line

#undef

#pragma

§4  #   Directiva nula

La directiva nula consiste en una línea con un solo carácter #. Este línea es ignorada totalmente.

  Inicio.


[1]  Esta denominación obedece a que las modificaciones ocurren antes que el fuente sea entregado al analizador sintáctico y el compilador.