Domanda

Sto usando il GCC 4.3.3 su Ubuntu 9.04 a 64 bit e si stava errori utilizzando C ++ - commenti in stile nel codice C. Quando dico "per difetto" nel titolo, voglio dire semplicemente invocando gcc test.c

Secondo i GCC 4.3.3 Docs ( qui ), questo è supportato ... eppure ho ottenuto gli errori in ogni caso.

Questi errori sono andati via con un semplice -std = c99 Oltre alla mia stringa di compilazione, quindi il mio problema è risolto. Curioso di sapere se gli esperti del CCG là fuori avevano una spiegazione per questo, come mi sembra essere una chiara contraddizione con la documentazione.

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

int main( void )
{
   return 0;
}
È stato utile?

Soluzione

Per defualt GCC sta usando C89 / 90 di serie con estensioni GCC. A rigor di termini per impostazione predefinita, non è aderente a qualsiasi norma specifica, dal momento che per impostazione predefinita non emetterà alcun messaggio di diagnostica in situazioni in cui tali messaggi sono richieste dalla norma. È necessario eseguire gcc in modalità -ansi -pedantic (eventualmente anche -Wall) al fine di farlo aderire allo standard. E in questo caso si dovrà, ancora una volta, C89 / 90.

Altri suggerimenti

E 'possibile Ubuntu è sovrascrivendo il default, che dovrebbe essere gnu89 . Di certo non ho ricevuto che, con la mia copia di GCC 4.3 (su 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

  

L'impostazione predefinita, se non il dialetto linguaggio C   le opzioni sono date, è -std = gnu89

E // comments sono riconosciuti da -std=gnu89

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top