¿Cómo son C ++ - comentarios de estilo manejados en GCC 4.3.3 por defecto?
Pregunta
Estoy usando GCC 4.3.3 en Ubuntu 9.04 64 bits y estaba teniendo errores usando C ++ - comentarios de estilo en código C. Cuando digo "por defecto" en el título, me refiero simplemente invocando gcc test.c
Según los GCC 4.3.3 docs ( aquí ), esto es apoyado ... todavía tengo los errores de todos modos.
Estos errores se fueron con una simple adición -std = c99 a mi cadena de compilación, por lo que mi problema está resuelto. Curioso si alguna expertos CCG por ahí tenían una explicación para esto, ya que me parece ser una clara contradicción con la documentación.
#include <stdio.h>
// this is a comment
int main( void )
{
return 0;
}
Solución
Por GCC defualt está utilizando C89 / 90 estándar con extensiones CCG. Estrictamente hablando por defecto no se adhiere a ninguna norma específica, ya que por defecto no emitirá ningún mensaje de diagnóstico en situaciones en las que tales mensajes son requeridos por la norma. Tiene que ejecutar gcc en modo -ansi -pedantic
(posiblemente también -Wall
) con el fin de hacer que se pegue a la norma. Y en este caso tendrá, una vez más, C89 / 90.
Otros consejos
Es posible Ubuntu está anulando el valor por defecto, que debe ser gnu89 . Ciertamente no consigo que con mi copia de GCC 4.3 (en Debian).
% echo '// foo' | gcc-4.3 -x c -c -
% echo '// foo' | gcc-4.3 -std=gnu89 -x c -c -
% echo '// foo' | gcc-4.3 -std=c89 -x c -c -
<stdin>:1: error: expected identifier or '(' before '/' token
Presupuesto de http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards
El valor por defecto, si no hay dialecto lenguaje C se dan opciones, es -std = gnu89
Y // comments
son reconocidos por -std=gnu89