13.01.2015 Views

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

Pensar en C++ (Volumen 1) - Grupo ARCO

SHOW MORE
SHOW LESS

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 />

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!