Pergunta

Eu estou usando GCC 4.3.3 em Ubuntu 9.04 64 bits e foi recebendo erros usando C ++ - comentários de estilo em código C. Quando eu digo "por defeito" no título, quero dizer simplesmente invocando gcc test.c

De acordo com o GCC 4.3.3 docs ( aqui ), este é suportado ... mas eu tenho os erros de qualquer maneira.

Esses erros foram embora com um simples -std = c99 além de minha corda de compilação, por isso o meu problema está resolvido. Curioso, se os peritos do CCG lá fora, tinha uma explicação para isso, como me parece ser uma clara contradição com a documentação.

#include <stdio.h>
// this is a comment

int main( void )
{
   return 0;
}
Foi útil?

Solução

Por GCC defualt está usando C89 / 90 padrão com extensões GCC. Estritamente falando por padrão não está aderindo a qualquer norma específica, uma vez que por padrão ele não emitirá quaisquer mensagens de diagnóstico em situações em que tais mensagens são exigidos pela norma. Você precisa executar gcc no modo -ansi -pedantic (possivelmente também -Wall), a fim de fazê-lo ficar com o padrão. E neste caso você terá, mais uma vez, C89 / 90.

Outras dicas

É possível Ubuntu está substituindo o padrão, que deve ser gnu89 . Certamente eu não conseguir isso com a minha cópia do GCC 4.3 (no 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

http://gcc.gnu.org/onlinedocs/gcc/Standards.html#Standards

O padrão, se nenhum dialeto linguagem C Opções são dadas, é -std = gnu89

E // comments são reconhecidos pelo -std=gnu89

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top