2011-09-17 12 views

risposta

3

usare il flag -std= per specificare un dialetto lingua: c89, c99, c++98, ecc Si noti che c90 è equivalente a c89.

Come una stenografia -ansi causa -std=c89 in modalità C e -std=c++98 in modalità C++.

Utilizzare -pedantic per abilitare tutte le diagnostiche richieste dagli standard.

I valori predefiniti sono gnu89 per C e gnu++98 per C++. Consultare il manuale per le descrizioni dettagliate dei vari dialetti.

+0

Quale di questi è l'impostazione predefinita? C'è un'opzione in gcc che mi dice di vedere la versione di default? – Bruce

+0

@Bruce: Aggiunto! Nota che l'impostazione predefinita di C++ potrebbe eventualmente cambiare :-) –

+0

Cosa intendi per modalità * C * e * modalità C++ *? Recentemente ho letto che [GCC 4.8 mira a passare alla modalità C++ per impostazione predefinita] (http://www.phoronix.com/scan.php?page=news_item&px=MTA4MzI). Cosa significa? – Nawaz

6

Leggere la pagina di manuale. Sul mio computer (OSX 10.7, gcc version 4.2.1 (Basato su Apple Inc. costruire 5658) (LLVM costruire 2335.15.00)):

-std =
        determinare lo standard di lingua. Questa opzione è attualmente supportata solo
        durante la compilazione di C o C++.

        Un valore per questa opzione deve essere fornito; I valori possibili sono

....

        gnu89
                default, ISO C90 più estensioni GNU (tra cui alcune caratteristiche C99).

....

        gnu ++ 98
                Lo stessi -std = C++ 98 più estensioni GNU. Questo è l'impostazione predefinita per il codice C++.

+0

Funziona per GCC per me ma non per Clang. –

+0

Ummm 'man gcc' dice che non esiste una pagina man per gcc. Wat? – starbeamrainbowlabs

0

È inoltre possibile controllare uno dei predefined Macros, per esempio se il vostro GCC chiede ANSI C (STRICT__ANSI) di default (cioè senza argomenti CLI).

+0

Nessuna versione di gcc è completamente conforme a qualsiasi standard ANSI/ISO per impostazione predefinita. –

3

Prova sotto il comando e la ricerca di std

gcc -v --help | less 

che vi mostrerà tutte le opzioni disponibili per il vostro gcc.

+1

Ma non quale opzione viene utilizzata per impostazione predefinita. –

0

Nessuna versione di gcc è completamente conforme agli standard ANSI o ISO C per impostazione predefinita. L'impostazione predefinita è sempre equivalente a -std=gnuNN, che supporta lo standard fornito con estensioni specifiche per GNU. Prima della versione 5 (e risalente a un certo numero di anni), il valore predefinito era -std=gnu90. A partire dalla versione 5, il valore predefinito è -std=gnu11.

Ci sono stati tre standard ISO C: C90, C99 e C11. (C95 era un emendamento minore al C90). Il primo standard ANSI C è stato pubblicato nel 1989 ed è noto come C89; descrive la stessa lingua dello standard ISO C90.

Per scoprire la versione in lingua predefinita per il GCC si è in esecuzione, il tipo

info gcc 

di ricerca per la frase "Il valore di default".

Si presume che sia stata installata la documentazione di gcc, che la documentazione mostrata da info gcc corrisponda alla versione di gcc in uso e che il testo sia abbastanza simile che la ricerca di "L'impostazione predefinita" troverà le informazioni corrette. Nessuno di questi è garantito. I vecchi manuali di gcc possono essere organizzati diversamente.

Più affidabile, gestita

gcc --version 

per vedere quale versione si sta eseguendo, quindi visitare la pagina GCC online documentation e leggere la documentazione per la versione che si sta eseguendo.

Più semplicemente, se si dispone di una versione precedente alla 5.0, il valore predefinito è -std=gnu89; altrimenti il ​​valore predefinito è -std=gnu11. (Ciò potrebbe cambiare in una versione futura, ma solo dopo che un nuovo standard ISO C è stato pubblicato e i manutentori di gcc hanno avuto il tempo di implementarlo e decidere di renderlo predefinito. Non tratteniamo il respiro.)

Oppure è possibile evitare del tutto la domanda specificando la versione desiderata usando l'opzione da riga di comando -std=....

Problemi correlati