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
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.
Si utiliza comentarios de C++ en C, es probable que algunos compiladores de C no acepten su código. Consideraría esto dañino.
+1 para una respuesta obviamente correcta. –
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. –
¿Una hora? Máx. 5 minutos para escribir una secuencia de comandos de Perl ... –
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.
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
@maxschlepzig, ¿qué compilador ** no ** admite C99? –
@maxschlepzig: Eso es fácil: MSVC. – kusma
"C" es compatible con C99, pero en C89 (que es, con mucho, el dialecto más compatible) no es compatible.
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.
En realidad, debe usar un sistema de control de versiones para realizar un seguimiento del código antiguo no utilizado;) – kusma
A menos que esté probando un cambio que no debería comprometerse. –
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
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++.
+1 problema muy interesante que ha planteado. –
MISRA C: 2012 (que incluye conformidad C99) permitirá '//' comentarios – Andrew
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.
- 1. ¿Se consideran los inicializadores de instancias un estilo incorrecto?
- 2. Cambiando los comentarios del estilo C++ al estilo C
- 3. Comentarios XML de estilo C# en Delphi 2010
- 4. ver los comentarios dll en C#
- 5. dificultades para obtener los comentarios de c-estilo en flexión/lex
- 6. Haciendo caso omiso de los comentarios del estilo C en un analizador del combinador de Scala
- 7. Comentarios anidados en C++
- 8. expresión regular necesaria para eliminar los comentarios de C/C#
- 9. comentarios aspecto divertido -? C++
- 10. Sancionar los comentarios del bloque C en Emacs
- 11. ¿Los constructores protegidos se consideran buenas prácticas?
- 12. Objective C @propiedad comentarios
- 13. ¿Cómo se muestra '<' char en comentarios de C# XML?
- 14. C++ en lugar de C-estilo arroja
- 15. comentarios Heredar XML de interfaces en C#
- 16. convirtiendo cadena de estilo c a cadena de estilo C++
- 17. Producto incorrecto de dos INT_MAX numbes en C/C++
- 18. Autogenerar comentarios de función C/C++ en Eclipse
- 19. ¿Cómo salto entre los comentarios del documento XML en C#?
- 20. suprimir selectivamente los comentarios del código XML en C#?
- 21. Formas de sincronizar la interfaz y los comentarios de implementación en C#
- 22. comentarios de estilo de caja con yasnippet
- 23. Cómo cambiar el color de los comentarios de Emacs en modo C++/C a rosa claro
- 24. Simulando C-estilo para los bucles en Python
- 25. ¿Por qué las mayúsculas se consideran constantes como un mal estilo de codificación?
- 26. ¿Por qué los subprocesos del sistema operativo se consideran caros?
- 27. Cómo quitar los robo-comentarios y #region de C#?
- 28. ¿Por qué/**/comentarios funcionan en hojas de estilo pero // los comentarios no?
- 29. ¿Se consideran iframes 'mala práctica'?
- 30. ¿Dónde puedo encontrar un buen ejemplo de los comentarios de documentación de C# /// xml en uso?
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. –
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
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. –