2010-08-29 9 views
13

Estaba discutiendo estilos de programación C con algunos estudiantes y cuando estábamos hablando de comentarios, uno de ellos notó que no usa comentarios C++ en el código C porque son una mala idea. Resulta que se basó en la experiencia personal con comentarios de C++ de varias líneas, pero no es la primera vez que oigo esa afirmación. Entonces, ¿se considera dañino el //? Si es así, ¿por qué?¿Los comentarios de C++ se consideran estilo incorrecto en C?

Respuesta

23

Depende de qué versión de C esté utilizando. C 99 permite // como un comentario, mientras que C 89 no.

Si quiere ser lo más compatible posible, no lo use. Pero, creo que este es un caso marginal extremo. Estoy dispuesto a apostar que casi todos usan C 99.

Editar: Cualquier versión reciente de GCC usa la mayor parte de C99. Puede encontrar más información en Wikipedia.

+4

mis opciones estándar de gcc son '-ansi -pedantic -W -Wall' lo que hace que gcc sea muy estricto al rechazar y advertir sobre el mal código. También rechaza los comentarios '//'. Puede usar '-std = c99' en lugar de' -ansi' si quiere aceptar material C99 pero mantiene el rigor, pero prefiero que mi código C sea lo más compatible posible. –

+0

Honestamente, no tengo tanta experiencia en las opciones de compilación. Todavía estoy aprendiendo a usar punteros correctamente;). Era un tipo de PHP metiéndome solo en C/C++. Solo sé la diferencia porque tuve la misma pregunta cuando estaba en la escuela secundaria. – Codeacula

+2

De hecho, muy pocas personas usan C99. Es solo que la mayoría de los compiladores C (incluso los C90) aceptaron // como una extensión. –

11

Si utiliza comentarios de C++ en C, es probable que algunos compiladores de C no acepten su código. Consideraría esto dañino.

+0

+1 para una respuesta obviamente correcta. –

+3

Buen punto. No he visto un compilador de este tipo en los últimos 20 años, pero esa sería la única razón por la que es dañino. Otoh elimina los comentarios de C++ de un proyecto requiere una hora como máximo. –

+3

¿Una hora? Máx. 5 minutos para escribir una secuencia de comandos de Perl ... –

5

C++ - los comentarios de estilo se agregaron a C con el estándar (no ampliamente admitido) C99. Si bien el estándar en sí mismo no es ampliamente compatible en su totalidad, algunas partes de él (como los comentarios de estilo de C++) ya son compatibles en casi todos los compiladores. Teniendo en cuenta que se agregaron, significa que hay una necesidad para ellos, por lo que es fácil darse cuenta de que no se consideraría un mal estilo, especialmente si se establece pautas sobre dónde usarlos.

La única razón para no usarlos es si desea escribir un programa de compilación C89 bien formado.

+0

C99 no es ampliamente compatible? ¿Qué compiladores de C disponibles actualmente no son compatibles con C99? Quiero decir, al menos la mayor parte de C99 incluyendo // - Comentarios ... – maxschlepzig

+0

@maxschlepzig, ¿qué compilador ** no ** admite C99? –

+2

@maxschlepzig: Eso es fácil: MSVC. – kusma

0

"C" es compatible con C99, pero en C89 (que es, con mucho, el dialecto más compatible) no es compatible.

1

Una razón común por la que la gente usa // en lugar de /* */ es que puede "anidar" la primera y no la segunda, por lo que puede comentar el código que contiene comentarios. Pero realmente deberías estar usando #if 0 para comentar el código en C de todos modos.

+3

En realidad, debe usar un sistema de control de versiones para realizar un seguimiento del código antiguo no utilizado;) – kusma

+0

A menos que esté probando un cambio que no debería comprometerse. –

+0

No, aún debe usar el sistema de control de versiones. El VCS ya debe tener una copia del código, por lo que puede eliminarlo de manera segura. Entonces es una simple cuestión de resucitarlo del VCS más tarde. – kusma

8

Los comentarios de C++ no están permitidos según el estándar MISRA-C 2004. Ciertas industrias (automotrices, específicamente) premian el código compatible con MISRA y, por lo tanto, no se permiten comentarios en C++. Creo que lo mismo ocurre con otras herramientas de comprobación de códigos estáticos, como LDRA, etc.

Esto no los hace intrínsecamente malos, pero sí significa que si ingresas en ciertas industrias y quieres trabajar profesionalmente, se desaconsejará activamente el uso de comentarios al estilo C++.

+0

+1 problema muy interesante que ha planteado. –

+2

MISRA C: 2012 (que incluye conformidad C99) permitirá '//' comentarios – Andrew

0

Esto realmente no debería ser una preocupación en estos días, a menos que esté manteniendo el código escrito específicamente para compilar con compiladores antiguos y similares.

Cuestiones relacionadas