Ho letto here è C90 con estensioni. Come posso saperlo con certezza?Come scoprire quale standard ANSI C il mio gcc funziona di default?
risposta
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.
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++.
Funziona per GCC per me ma non per Clang. –
Ummm 'man gcc' dice che non esiste una pagina man per gcc. Wat? – starbeamrainbowlabs
È inoltre possibile controllare uno dei predefined Macros, per esempio se il vostro GCC chiede ANSI C (STRICT__ANSI) di default (cioè senza argomenti CLI).
Nessuna versione di gcc è completamente conforme a qualsiasi standard ANSI/ISO per impostazione predefinita. –
Prova sotto il comando e la ricerca di std
gcc -v --help | less
che vi mostrerà tutte le opzioni disponibili per il vostro gcc.
Ma non quale opzione viene utilizzata per impostazione predefinita. –
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=...
.
- 1. Opzioni GCC per far rispettare il controllo standard Ansi C?
- 2. Conformità standard C++ nell'AVR-GCC
- 3. make iterm show ansi default
- 4. GCC, C: Scoprire nome di avvertimenti di default per l'uso in #pragma ignorare
- 5. Quali versioni di gcc e g ++ supportano quale standard di c e C++?
- 6. Quale configurazione di JBoss dovremmo usare: web, standard, default?
- 7. Come funziona il comparatore di default in C#?
- 8. Interfaccia/implementazione in ANSI C
- 9. Impossibile scoprire quale codice di ritorno di -11 significa
- 10. Come funziona gcc `__thread`?
- 11. Come posso scoprire quale script, programma o shell è stato eseguito il mio script Perl?
- 12. Come scoprire quale account è in esecuzione il mio codice ASP.NET?
- 13. Come funziona il flag gcc -pg?
- 14. C++ 0x: thread, gcc o il mio errore?
- 15. Scoprire quale controllo è attivo
- 16. Errore GCC o non: default std :: function?
- 17. Come scoprire quale elemento GWT è attivo?
- 18. "ANSI C" o "ANSI C++" significa ancora oggi?
- 19. Scoprire quale compilatore Maven usa
- 20. Come scoprire quale risorsa drawble viene utilizzata?
- 21. Come scoprire quale porta utilizza un processo?
- 22. Analizza JSON in ANSI C
- 23. Come scoprire quale versione di webdeploy/msdeploy è attualmente installata?
- 24. Compilatore C standard attuale?
- 25. ANSI C e la funzione di sovraccarico
- 26. Quello che il C++ standard di dice di perdere un tiro identificatore nel distruttore di default
- 27. Come scoprire quale file .c contiene le funzioni .c di R internals, su Windows?
- 28. Come definire il valore NaN in ANSI C?
- 29. Come scoprire che il mio sito è stato raschiato?
- 30. Come scoprire da dove viene il mio errore?
Quale di questi è l'impostazione predefinita? C'è un'opzione in gcc che mi dice di vedere la versione di default? – Bruce
@Bruce: Aggiunto! Nota che l'impostazione predefinita di C++ potrebbe eventualmente cambiare :-) –
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