Namespaces
Variants

Comments

From cppreference.net
< c

Los comentarios sirven como una especie de documentación dentro del código. Cuando se insertan en un programa, el compilador los ignora efectivamente; están destinados únicamente a ser utilizados como notas por los humanos que leen el código fuente.

Contenidos

Sintaxis

/* comentario */ (1)
// comentario (2) (desde C99)
1) Conocidas frecuentemente como comentarios "al estilo C" o "multilínea".
2) Comúnmente conocidos como comentarios "estilo C++" o "de una sola línea".

Todos los comentarios son eliminados del programa en la fase de traducción 3 reemplazando cada comentario con un único carácter de espacio en blanco.

Estilo C

Los comentarios de estilo C se utilizan normalmente para comentar grandes bloques de texto o pequeños fragmentos de código; sin embargo, pueden usarse para comentar líneas individuales. Para insertar texto como comentario de estilo C, simplemente rodee el texto con /* y */ . Los comentarios de estilo C indican al compilador que ignore todo el contenido entre /* y */ . Aunque no es parte del estándar de C, /** y **/ se utilizan frecuentemente para indicar bloques de documentación; esto es legal porque el segundo asterisco simplemente se trata como parte del comentario.

Excepto dentro de una constante de carácter , un literal de cadena , o un comentario, los caracteres /* introducen un comentario. El contenido de dicho comentario se examina únicamente para identificar caracteres multibyte y encontrar los caracteres */ que terminan el comentario. Los comentarios de estilo C no pueden anidarse.

C++-style

Los comentarios estilo C++ se utilizan generalmente para comentar líneas individuales de texto o código; sin embargo, pueden colocarse juntos para formar comentarios multilínea. Para insertar texto como comentario estilo C++, simplemente preceda el texto con // y siga el texto con el carácter de nueva línea. Los comentarios estilo C++ indican al compilador que ignore todo el contenido entre // y una nueva línea.

Excepto dentro de una constante de carácter , un literal de cadena o un comentario, los caracteres // introducen un comentario que incluye todos los caracteres multibyte hasta, pero sin incluir, el siguiente carácter de nueva línea. El contenido de dicho comentario se examina solo para identificar caracteres multibyte y encontrar el carácter de nueva línea que termina el comentario. Los comentarios estilo C++ pueden anidarse:

//  y = f(x);   // invoke algorithm

Un comentario estilo C puede aparecer dentro de un comentario estilo C++:

//  y = f(x);   /* invoke algorithm */

Un comentario estilo C++ puede aparecer dentro de un comentario estilo C; este es un mecanismo para excluir un pequeño bloque de código fuente:

/*
    y = f(x);   // invoke algorithms
    z = g(x);
*/
(desde C99)

Notas

Debido a que los comentarios son eliminados antes de la etapa del preprocesador, una macro no puede utilizarse para formar un comentario y un comentario de estilo C sin terminar no se extiende desde un archivo #include'd.

/* Un intento de usar una macro para formar un comentario. */
/* Pero, un espacio reemplaza los caracteres "//".       */
#ifndef DEBUG
    #define PRINTF //
#else
    #define PRINTF printf
#endif
...  
PRINTF("Error en archivo %s en línea %i\n", __FILE__, __LINE__);

Además de comentar, otros mecanismos utilizados para la exclusión de código fuente son:

#if 0
    puts("esto no será compilado");
    /* no conflict with C-style comments */
    // no conflict with C++-style comments
#endif

y

if(0) {
    puts("esto será compilado pero no será ejecutado");
    /* no conflict with C-style comments */
    // no conflict with C++-style comments
}

La introducción de los comentarios // en C99 fue un cambio disruptivo en algunas circunstancias poco comunes:

a = b //*divisor:*/ c
+ d; /* C89 compiles a = b / c + d;
        C99 compiles a = b + d; */

Ejemplo

#include <stdio.h>
/*
Los comentarios estilo C pueden contener
múltiples líneas.
*/
/* O, solo una línea. */
// Los comentarios estilo C++ pueden comentar una línea.
// O, pueden
// encadenarse juntos.
int main(void)
{
  // El código siguiente no se ejecutará
  // puts("Hello");
  // El código siguiente sí se ejecutará
  puts("World");
  // Una nota sobre barra invertida + nueva línea.
  // A pesar de pertenecer a la fase de traducción 2 (vs fase 3 para comentarios),
  // '\' aún determina qué porción del código fuente se considera
  // como 'comentarios':
  // Este comentario será promovido a la siguiente línea \
  puts("Won't be run"); // puede generar una advertencia "comentario multilínea"
  puts("Hello, again");
}

Salida:

World
Hello, again

Referencias

  • Estándar C17 (ISO/IEC 9899:2018):
  • 6.4.9 Comentarios (p: 54)
  • Estándar C11 (ISO/IEC 9899:2011):
  • 6.4.9 Comentarios (p: 75)
  • Estándar C99 (ISO/IEC 9899:1999):
  • 6.4.9 Comentarios (p: 66)
  • Estándar C89/C90 (ISO/IEC 9899:1990):
  • 3.1.9 Comentarios

Véase también