Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
Pensar en C++ (Volumen 1) - Grupo ARCO
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
✐<br />
✐<br />
✐<br />
“Volum<strong>en</strong>1” — 2012/1/12 — 13:52 — page 45 — #83<br />
✐<br />
2.2. Herrami<strong>en</strong>tas para compilación modular<br />
#include <br />
El traductor puede implem<strong>en</strong>tar la s<strong>en</strong>t<strong>en</strong>cia del include de tal forma que se<br />
amolde a las necesidades de un compilador y sistema operativo particular, aunque<br />
sea necesario truncar el nombre y añadir una ext<strong>en</strong>sión. Evid<strong>en</strong>tem<strong>en</strong>te, también<br />
puede copiar las cabeceras que ofrece el fabricante de su compilador a otras sin ext<strong>en</strong>siones<br />
si quiere usar este nuevo estilo antes de que su fabricante lo soporte.<br />
Las librerías heredadas de C aún están disponibles con la ext<strong>en</strong>sión tradicional<br />
«.h». Sin embargo, se pued<strong>en</strong> usar con el estilo de inclusión más moderno colocando<br />
una «c» al nombre. Es decir:<br />
#include <br />
#include <br />
Se transformaría <strong>en</strong>:<br />
#include <br />
#include <br />
Y así para todas cabeceras del C Estándar. Eso proporciona al lector una distinción<br />
interesante <strong>en</strong>tre el uso de librerías C versus <strong>C++</strong>.<br />
El efecto del nuevo formato de include no es idéntico al antiguo: usar el «.h» da<br />
como resultado una versión más antigua, sin plantillas, y omiti<strong>en</strong>do el «.h» le ofrece<br />
la nueva versión con plantillas. Normalm<strong>en</strong>te podría t<strong>en</strong>er problemas si int<strong>en</strong>ta<br />
mezclar las dos formas de inclusión <strong>en</strong> un mismo programa.<br />
2.2.2. Enlazado<br />
El <strong>en</strong>lazador (linker) agrupa los módulos objeto (que a m<strong>en</strong>udo ti<strong>en</strong><strong>en</strong> ext<strong>en</strong>siones<br />
como .o ó .obj), g<strong>en</strong>erados por el compilador, <strong>en</strong> un programa ejecutable que<br />
el sistema operativo puede cargar y ejecutar. Es la última fase del proceso de compilación.<br />
Las características del <strong>en</strong>lazador varían de un sistema a otro. En g<strong>en</strong>eral, simplem<strong>en</strong>te<br />
se indican al <strong>en</strong>lazador los nombres de los módulos objeto, las librerías que se<br />
desean <strong>en</strong>lazar y el nombre del ejecutable de salida. Algunos sistemas requier<strong>en</strong> que<br />
sea el programador el que invoque al <strong>en</strong>lazador, aunque <strong>en</strong> la mayoría de los paquetes<br />
de <strong>C++</strong> se llama al <strong>en</strong>lazador a través del compilador. En muchas situaciones, de<br />
manera transpar<strong>en</strong>te.<br />
Algunos <strong>en</strong>lazadores antiguos no buscaban ficheros objeto más de una vez y buscaban<br />
<strong>en</strong> la lista que se les pasaba de izquierda a derecha. Esto significa que el ord<strong>en</strong><br />
de los ficheros objeto y las librerías puede ser importante. Si se <strong>en</strong>cu<strong>en</strong>tra con algún<br />
problema misterioso que no aparece hasta el proceso de <strong>en</strong>lazado, una posible razón<br />
es el ord<strong>en</strong> <strong>en</strong> el que se indican los ficheros al <strong>en</strong>lazador.<br />
2.2.3. Uso de librerías<br />
Ahora que ya conoce la terminología básica, puede <strong>en</strong>t<strong>en</strong>der cómo utilizar una<br />
librería. Para usarla:<br />
45<br />
✐<br />
✐<br />
✐<br />
✐