Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 161 — #199<br />
✐<br />
4.7. Conveciones para los ficheros de cabecera<br />
#define FLAG<br />
o puede darle un valor (que es la manera habitual <strong>en</strong> C para definir una constante):<br />
#define PI 3.14159<br />
En cualquier caso, ahora el preprocesador puede comprobar si la etiqueta ha sido<br />
definida:<br />
#ifdef FLAG<br />
Esto producirá un resultado verdadero, y el código que sigue al #ifdef se incluirá<br />
<strong>en</strong> el paquete que se <strong>en</strong>vía al compilador. Esta inclusión acaba cuando el preprocesador<br />
<strong>en</strong>cu<strong>en</strong>tra la s<strong>en</strong>t<strong>en</strong>cia:<br />
#<strong>en</strong>dif<br />
o<br />
#<strong>en</strong>dif // FLAG<br />
Cualquier cosa después de #<strong>en</strong>dif <strong>en</strong> la misma línea que no sea un com<strong>en</strong>tario<br />
es ilegal, incluso aunque algunos compiladores lo acept<strong>en</strong>. Los pares #ifdef/#<strong>en</strong>dif<br />
se pued<strong>en</strong> anidar.<br />
El complem<strong>en</strong>tario de #define es #undef (abreviación de «un-define» que hará<br />
que una s<strong>en</strong>t<strong>en</strong>cia #ifdef que use la misma variable produzca un resultado falso.<br />
#undef también causará que el preprocesador deje de usar una macro. El complem<strong>en</strong>tario<br />
de #ifdef es #ifndef, que producirá verdadero si la etiqueta no ha sido<br />
definida (éste es el que usaremos <strong>en</strong> los ficheros de cabecera).<br />
Hay otras características útiles <strong>en</strong> el preprocesador de C. Consulte la docum<strong>en</strong>tación<br />
de su preprocesador para ver todas ellas.<br />
4.7.4. Un estándar para los ficheros de cabecera<br />
En cada fichero de cabecera que conti<strong>en</strong>e una estructura, primero debería comprobar<br />
si ese fichero ya ha sido includo <strong>en</strong> este fichero cpp particular. Hágalo comprobando<br />
una bandera del preprocesador. Si la bandera no está definida, el fichero<br />
no se ha incluido aún, y se debería definir la bandera (de modo que la estructura no<br />
se pueda redeclarar) y declarar la estructura. Si la bandera estaba definida <strong>en</strong>tonces<br />
el tipo ya ha sido declarado de modo que debería ignorar el código que la declara.<br />
Así es como debería ser un fichero de cabecera:<br />
#ifndef HEADER_FLAG<br />
#define HEADER_FLAG<br />
// Escriba la ódeclaracin íaqu...<br />
#<strong>en</strong>dif // HEADER_FLAG<br />
161<br />
✐<br />
✐<br />
✐<br />
✐