Como são C ++ - comentários estilo movimentados no GCC 4.3.3 por padrão?
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;
}
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