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]


3.1  Comentarios

"Remember, comments are for humans, so write them that way!".  Aaron Weiss. "JavaScript Tutorial for Programmers".

§1  Sinopsis

Comentarios son anotaciones; observaciones, recordatorios, etc. en el programa. Son para uso exclusivo del programador, y eliminados del código fuente en la fase de preprocesado; antes del análisis sintáctico ( 1.4).

Aparte de las consideraciones estrictamente formales que se indican en esta sección, no debemos perder de vista que los comentarios, aunque voluntarios (no es obligatorio escribirlos), representan una ayuda inestimable durante la construcción del programa. Siendo imprescindibles para el programador original, o los que le sucedan en las tareas de mantenimiento, cuando es necesario habérselas con el código un tiempo después de que fue escrito.  Además de clarificar ideas, los comentarios son también un valioso instrumento de depuración, pues permiten eliminar provisionalmente secciones enteras de código.

En C++ coexisten dos formas de comentarios:  El de C clásico y el de C++. Ambos son soportados por C++Builder, que tiene además una extensión particular sobre el estándar ANSI, los comentarios anidados (este último tipo solo debe usarse si la compatibilidad no es importante).

También deben tenerse en cuenta las observaciones que siguen sobre el uso de separadores (whitespaces) y delimitadores en los comentarios para evitar otros problemas de compatibilidad.

§2  Comentarios C

Un comentario C es cualquier secuencia de caracteres contenida entre los delimitadores /* ... */. La totalidad de la secuencia, incluyendo los delimitadores  /*  y */ son sustituidos por un simple espacio después de la expansión de macros (algunas implementaciones de C pueden eliminar los comentarios sin reemplazarlos por espacios).

Ejemplo:

int x = 2;    /* esto es un comentario que será eliminado o sustituido por un simple espacio después en la frase de preprocesado.  Como puede verse, el comentario puede ocupar varias líneas de texto en el código fuente.

Se recomienda utilizarlos con profusión, a veces todas las explicaciones son pocas, ya que el C++ es un lenguaje bastante críptico en algunas ocasiones, sobre todo algunas sentencias muy "elegantes" y comprimidas, pero ininteligibles en una primera lectura */

Ejemplo; la expresión:

int /* declaración */ i /* contador */;

es analizada sintácticamente como estos tres tokens:    int i y ;

§3  Pegado de cadenas

Algunos compiladores C clásicos utilizan el símbolo /**/ para el pegado (concatenado) de tokens, pero el nuevo Estándar ANSI recomienda que esto se haga con ##  (ver ejemplos).

El pegado de tokens es una técnica que utiliza las habilidades de preprocesador para construir nombres nuevos utilizando macros ( 4.9.10b). Por ejemplo:

#define VAR(i,j)  (i/**/j)    // Incorrecto

#define VAR(i,j)  (i##j)      // Correcto

#define VAR(i,j)  (i ## j)    // Correcto


Después de estas macros, las expresiones que siguen son transformadas por el preprocesador como se indica

int VAR(opcion, uno)( );     int opcionuno();

int VAR(opcion, dos)( );     int opciondos();

int VAR(opcion, tres)( );    int opciontres();

§4  Comentarios C++

C++ admite comentarios de una sola línea utilizando dos barras inclinadas ( // ) como señal de comienzo.  El comentario empieza en este punto (incluyendo las señales de comienzo) y continúa hasta el próximo carácter de nueva linea.

class X {  // esto es un comentario

  ...

};

§5  Comentarios anidados

El estándar ANSI C no permite la existencia de comentarios anidados [1].  Por ejemplo, no podemos utilizar el comentario:

/* int /* declaración */ i /* contador */; */

porque el ámbito del primer  /*  termina en el primer  */, por lo que se obtiene:  i; */, lo que produciría un error de sintaxis.

§6  Delimitadores y espacios

En casos raros, algunos espacios antes de /*//,  y después de */,  aunque no sean sintácticamente imprescindibles, deben ponerse para evitar posibles problemas de portabilidad.  Por ejemplo, en este código:

int i = j//* divide por k*/k;

+m;

es analizado sintácticamente como

int i = j +m;

no como:

int i = j/k;

+m;

que sería lo esperado según las reglas de C.  La forma que sigue (más legible) evitaría este problema.

int i = j/ /* divide por k */ k;

+m;

  Inicio.


[1]  Por defecto, C++Builder no permite comentarios anidados, aunque se pueden autorizar mediante opciones del compilador.