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;
}
¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top