Comentarios en C++: //, /* */ y cómo comentar como un profesional
Respuesta corta: // comenta el resto de la línea; /* ... */ comenta todo lo que queda entre los marcadores, aunque abarque varias líneas. El compilador descarta ambos antes incluso de empezar — prueba de ello, abajo.
#include <iostream>
using namespace std;
// Este comentario de línea explica el programa. El compilador lo ignora.
/* Los comentarios de bloque pueden abarcar
tantas líneas como necesites. */
int main() {
cout << "comments are ignored" << endl; // comentario al final de la línea
// cout << "this line does not run";
return 0;
}
La salida lo demuestra: las líneas comentadas no producen código, ni salida, ni coste. Eso convierte los comentarios en una herramienta de comunicación para humanos — y, como toda comunicación, la mayor parte es ruido.
Las dos formas
| Forma | Alcance | Uso típico |
|---|---|---|
// comentario de línea | hasta el final de la línea | Explicar una línea o una decisión — la opción predeterminada del día a día |
/* bloque */ | hasta el */ de cierre | Desactivar temporalmente un bloque de código, notas de cabecera de archivo |
La trampa: los comentarios de bloque no se anidan
/*
Desactivando este bloque de depuración...
/* comentario interno */ ← the block ENDS here!
cout << "this is NOT commented out"; // ← sorpresa, es código vivo
*/ // ← */ huérfano — error de sintaxis
El primer */ cierra el bloque, sin importar cuántos /* lo hayan abierto. Por eso depurar comentando bloques falla de formas confusas. Para desactivar código temporalmente, es preferible #if 0 … #endif (que sí se anidan) o simplemente borrarlo — el control de versiones lo recuerda.
Qué separa los comentarios buenos del ruido
- Bien: explica el PORQUÉ, no el qué.
// reintentar: la API limita la tasa de ráfagasle dice al siguiente lector algo que el código no puede.// suma 1 a ile dice lo que la línea ya dice. - Bien: señala la intención y las compensaciones.
// O(n²), pero aquí n ≤ 100 — está biense anticipa a un PR de «optimización» sin sentido. - Mal: código comentado que se queda ahí. Se pudre, estorba, y el control de versiones ya lo tiene si algún día lo necesitas.
- Mal: comentarios que mienten. Un comentario que contradice el código es peor que no tener comentario — cuando cambies el código, actualiza o borra su comentario al mismo tiempo.
- Convenciones que conviene conocer:
// TODO:para trabajo pendiente,// FIXME:para fallos conocidos,///para comentarios de documentación que herramientas como Doxygen extraen y convierten en documentación.
Comentarios en el mundo real (enfoque de entrevista)
- «¿Los comentarios afectan al rendimiento?» — no; se eliminan antes de la compilación. Cero coste en tiempo de ejecución, un pequeño coste en tiempo de compilación.
- «¿Se pueden anidar los comentarios de bloque?» — no; gana el primer
*/(ver la trampa de arriba). Una pregunta de cribado sorprendentemente habitual. - «¿Qué son los comentarios de documentación?» — anotaciones al estilo
///que los generadores de documentación convierten en documentación de referencia; práctica estándar en las API públicas. - «¿Cómo revisarías un diff de 300 líneas sin comentarios?» — la verdadera pregunta que hay detrás: ¿el código explica su porqué? Los nombres pueden cargar con mucho; los comentarios llevan lo que los nombres no pueden.
Práctica
- Ejecuta el ejemplo de arriba y luego comenta el
coutque funciona y descomenta el que está desactivado — invierte la salida del programa sin cambiar una sola línea de código real. - Rómpelo: pon
/*antes dereturn 0;y no lo cierres — lee la queja del compilador sobre un final de archivo inesperado (un pariente cercano de los errores de nuestra guía de errores comunes (EN)). - Resuelve Suma de 1 a N y escribe exactamente un comentario: el «porqué» del límite de tu bucle.
Relacionado: la lección del Hola Mundo (donde aparecen los comentarios por primera vez), qué es int main() y el bucle while explicado (EN).