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 524 — #562<br />
✐<br />
Apéndice A. Estilo de codificación<br />
errores cuando se compile con una implem<strong>en</strong>tación conforme al Estándar <strong>C++</strong> (no<br />
todos los compiladores soportan todas las características del l<strong>en</strong>guaje). Las s<strong>en</strong>t<strong>en</strong>cias<br />
que deberían causar errores de compilación están com<strong>en</strong>tadas con //! de modo<br />
que se pued<strong>en</strong> descubrir y probar fácilm<strong>en</strong>te de modo automático. Los errores<br />
descubiertos por el autor aparecerán primero <strong>en</strong> la versión electrónica del libro<br />
(www.BruceEckel.com) y después <strong>en</strong> las actualizaciones del libro.<br />
Uno de los estándares de este libro es que todos los programas compilarán y <strong>en</strong>lazarán<br />
sin errores (aunque a veces causarán advert<strong>en</strong>cias). Algunos de los programas,<br />
que demuestran sólo un ejemplo de codificación y no repres<strong>en</strong>tan programas completos,<br />
t<strong>en</strong>drán funciones main() vacías, como ésta:<br />
int main() {}<br />
Esto permite que se pueda <strong>en</strong>lazar el programa sin errores.<br />
El estándar para main() es retornar un int, pero <strong>C++</strong> Estándar estipula que si<br />
no hay una s<strong>en</strong>t<strong>en</strong>cia return <strong>en</strong> main(), el compilador g<strong>en</strong>erará automáticam<strong>en</strong>te<br />
código para return 0. Esta opción (no poner un return <strong>en</strong> main()) se usa <strong>en</strong> el<br />
libro (algunos compiladores produc<strong>en</strong> advert<strong>en</strong>cias sobre ello, pero es porque no son<br />
conformes con <strong>C++</strong> Estándar).<br />
A.2. Nombres de fichero<br />
En C, es tradición nombrar a los ficheros de cabecera (que conti<strong>en</strong><strong>en</strong> las declaraciones)<br />
con una ext<strong>en</strong>sión .h y a los ficheros de implem<strong>en</strong>tación (que g<strong>en</strong>eran<br />
alojami<strong>en</strong>to <strong>en</strong> memoria y código) con una ext<strong>en</strong>sión .c. <strong>C++</strong> supuso una evolución.<br />
Primero fue desarrollado <strong>en</strong> Unix, donde el sistema operativo distingue <strong>en</strong>tre<br />
mayúsculas y minúsculas para nombres de ficheros. Los nombres originales para<br />
los ficheros simplem<strong>en</strong>te se pusieron <strong>en</strong> mayúscula: .H y .C. Esto, por supuesto, no<br />
funcionaba <strong>en</strong> sistemas operativos que no distingu<strong>en</strong> <strong>en</strong>tre mayúsculas y minúsculas<br />
como DOS. Los v<strong>en</strong>dedores de <strong>C++</strong> para DOS usaban ext<strong>en</strong>siones hxx y cxx, o<br />
hpp y cpp. Después, algui<strong>en</strong> se dio cu<strong>en</strong>ta que la única razón por la que se puede<br />
necesitar un ext<strong>en</strong>sión difer<strong>en</strong>te es que el compilador no puede determinar si debe<br />
compilarlo como C o <strong>C++</strong>. Como el compilador nunca compila ficheros de cabecera<br />
directam<strong>en</strong>te, sólo el fichero de implem<strong>en</strong>tación necesita una distinción. Ahora,<br />
<strong>en</strong> prácticam<strong>en</strong>te todos los sistemas, la costumbre es usar cpp para los ficheros de<br />
implem<strong>en</strong>tación y .h para los ficheros de cabecera. Fíjese que cuando se incluye un<br />
fichero de cabecera <strong>C++</strong>, se usa la opción de no poner ext<strong>en</strong>sión al nombre del fichero,<br />
por ejemplo: #include <br />
A.3. Marcas com<strong>en</strong>tadas de inicio y fin<br />
524<br />
Un tema muy importante <strong>en</strong> este libro es que todo el código que puede ver <strong>en</strong><br />
el libro ha sido sido verificado (con al m<strong>en</strong>os un compilador). Esto se consigue extray<strong>en</strong>do<br />
automáticam<strong>en</strong>te los listados del libro. Para facilitar esta tarea, todos los<br />
listados de código susceptibles de ser compilados (al contrario que los fragm<strong>en</strong>tos,<br />
que hay pocos) ti<strong>en</strong><strong>en</strong> unas marcas com<strong>en</strong>tadas al principio y al final. Estas marcas<br />
las usa la herrami<strong>en</strong>ta de extracción de código ExtractCode.cpp del Volum<strong>en</strong> 2<br />
de este libro (y que se puede <strong>en</strong>contrar <strong>en</strong> el sitio web www.BruceEckel.com) para<br />
extraer cada listado de código a partir de la versión <strong>en</strong> texto plano ASCII de este<br />
libro.<br />
✐<br />
✐<br />
✐<br />
✐