2011-09-07 31 views
5

En C podemos hacer comentarios de dos maneras:¿Cuál es la mejor manera de escribir comentarios en C?

1>

/* this is one way */ 

2>

// this is 2nd way 

¿Cuál es la diferencia entre los dos?
¿Es uno mejor que el otro?

o

hacer ambas tienen el mismo impacto y no hay diferencia en la compilación o procesamiento en cualquier plataforma?

Editar: escribir código para Especialmente incrustado

+0

No programo en C, pero creo que algunos proyectos de código abierto (como la versión MRI del intérprete Ruby) solo permiten la primera. Si planea contribuir con ellos, también puede acostumbrarse a hacer sus preferencias. –

Respuesta

4

Uno (quizás teórico) razón no utilizar // comentarios es que no están soportadas en C90. Es cierto que la mayoría, tal vez todos, los compiladores de C modernos admiten // comentarios, incluso si no son compatibles con el resto de C99, pero los diferentes compiladores admiten diferentes subconjuntos de C99.

Cualquier compilador que admita C90 rechazará (o al menos advertirá) // comentarios si lo invoca en un modo conforme a C90.

Si es un fanático de la portabilidad y desea asegurarse de que su código compila con cualquier compilador de C, entonces debe compilarlo en modo C90, lo que significa que // comentarios serán rechazados. Usted puede habilitar extensiones o cumplimiento parcial (o incluso completo) C99, pero luego habilitará otras características C99 también - y su compilador no le advertirá acerca de otras características específicas de C99 que podría usar accidentalmente.

Y como señala el comentario de Andrew Grimm, algunos proyectos pueden tener estándares de codificación que requieren una u otra forma.

Por ejemplo, gcc admite los comentarios // y long long (así como una serie de otras características de C99); Habilitando // comentarios en gcc se desactiva el diagnóstico para long long.

Pero para la mayoría de los propósitos, esto probablemente no sea motivo suficiente para evitar // comentarios. Puede escribir un código razonablemente portátil si conoce qué características son específicas de C99, qué compiladores admiten esas características y qué compiladores le interesan.

+0

esto es lo que deseo transmitir ... tengo duda de que // no sea compatible con la versión anterior de c..gracias –

5

Sólo tiene que utilizar lo que sea más conveniente y natural. Los comentarios breves, un puñado de palabras, al final de una línea corta funcionan bien con //. Los comentarios más largos, distribuidos en varias líneas, son quizás mejores con el estilo tradicional /* ... */. Lo que sea, todo se reduce a las preferencias personales y los estándares de codificación de sus equipos.

No hace ninguna diferencia en el proceso de compilación.

8

Técnicamente, solo la primera forma está garantizada para funcionar en todos los compiladores, presentes y pasados. En la práctica, todos los compiladores de C implementados desde mediados de los años ochenta se implementan en ambos sentidos, por lo tanto, a menos que esté escribiendo para un compilador heredado, puede hacer lo que mejor funcione para usted o su organización.

+2

Los comentarios de estilo C++ (//) se agregaron a C en el estándar C99, aunque muchos compiladores les permitieron mucho más tiempo. –

+1

'//' comentarios son una de las pocas características de lenguaje C99 (no de biblioteca) que MSVC admite al compilar en modo C. En realidad, me pregunto si es el único? –

0

Como dijiste: ambos tienen el mismo impacto y ninguna diferencia en la compilación o el procesamiento en cualquier plataforma.

0
  1. Esta es una manera de crear fácilmente los comentarios de varias líneas
  2. Sólo se puede comentar por línea usando esta forma de comentar.

Cuál es mejor es realmente una cuestión de preferencia personal, para los comentarios que abarcan múltiples líneas, usaría la primera, pero esta es mi preferencia personal.

0
/* this is one way */ 

sobre todo para utilizar este comentario de bloque y

// 

para sola línea.

Como en caso de que uno sea mejor.

// 

se garantiza que funciona con cualquier compilador.

+0

No, el segundo ejemplo (doble barra) no funcionará en ningún compilador, ya que no fue compatible originalmente (como dice Wallyk en una de las otras respuestas) – fluffyben

+0

gracias por corrección –

1

Una razón para usar // comentarios podría ser si desea comentar un bloque más grande de código que tiene comentarios dentro. No puede hacer comentarios anidados con /* */.

Esto no va a compilar:

/* 

/*printf("foo");*/ 
printf("bar"); 

*/ 

Pero esto está bien:

/* 

//printf("foo"); 
printf("bar"); 

*/ 
3

Si usted tiene la necesidad de grep algo de código, tendrá ventajas con el comentario de una sola línea se utiliza para cada línea incluso si comenta un bloque (STRG + Shift + 7 en Eclipse). El código grepped donde se encontró su frase de búsqueda se visualiza CON //. El resultado no puede conducir a malentendidos debido a que no se muestran comentarios de varias líneas. resultado

1 #define MY_COUNTER 42 
2 if(MY_COUNTER == index) 
3 { 
4  tempVar = calcSomething(); 
5  doThis(); 
6 // tempVar = MY_COUNTER; 
7  doThat(); 
8 } 

grep:
1 #define MY_COUNTER 42
2 si (MY_COUNTER == índice)
6 // TempVar = MY_COUNTER;

En el código de arriba se ve directamente en el resultado grep (buscar MY_COUNTER), la línea 8 está comentada.

1 #define MY_COUNTER 42 
2 if(MY_COUNTER == index) 
3 { 
4  tempVar = calcSomething(); 
5  doThis(); 
6 /*  
7  tempVar = MY_COUNTER; 
8 */ 
9  doThat(); 
8 } 

Aquí no se puede ver el comentado línea:
1 #define MY_COUNTER 42
2 si (MY_COUNTER == índice)
7 TempVar = MY_COUNTER;

Cuestiones relacionadas