Come posso usare C ++ 11 con g ++?


21

Attualmente sto scrivendo tutto il mio codice in gedit e sto usando il terminale per compilare i miei programmi. Per fare ciò, sto scrivendo:

$ g++ main.cpp -o main
$ ./main

E questo sta funzionando. Tuttavia, non utilizza C ++ 11. Come posso controllare la mia versione di C ++ e anche compilare tramite terminale usando C ++ 11?



Devi sempre includere -std = c ++ 11 o c'è un'impostazione in modo che ogni volta che la compilo automaticamente comporti la causa c ++ 11 o
Mike francese

Risposte:


53

Questo puoi farlo usando la -std=c++11bandiera. Ecco un esempio:

g++ -std=c++11 -Wall -Wextra -Werror main.cpp -o main

Questa modalità può essere selezionata con il -std=c++11flag della riga di comando o -std=gnu++11per abilitare anche le estensioni GNU. ( Sorgente )

Vedi la spiegazione delle altre bandiere qui sotto. Sono profondamente convinto che l'utilizzo di almeno questi flag di errore ti semplificherà la vita nel lungo periodo. Una volta che hai una migliore conoscenza di ciò che fa il tuo script, puoi omettere gli avvisi se necessario per ottenere un risultato, ma non dovrebbe essere lo standard. Spero che questo ti aiuti. Ecco un buon posto per iniziare a leggere.

  • -Wall - abilita tutti i principali avvisi.
  • -Wextra - abilita altri importanti avvisi.
  • -Werror- Trasforma tutti gli avvisi in errori, facendo fallire le compilazioni se vengono segnalati eventuali avvisi.

fonti:

  1. GCC: Riepilogo opzioni
  2. GCC: opzioni per richiedere o sopprimere gli avvisi

5
Grazie! Ti dispiace spiegare a cosa servono "-Wall" e "-Werror" in quel comando per favore?

1
Aggiunto alla mia risposta.
Videonauth,

7
@ dhaneku.b: perché non leggere la documentazione? Ecco a cosa serve.
Lightness Races con Monica

9
@LightnessRacesinOrbit Perché la documentazione non spiegherà necessariamente perché Videonauth ritenesse importante aggiungerli, nonostante non fossero nella riga di comando dell'esempio originale, o spiegasse necessariamente che tipo di interazione importante "-Wall" e " -Werror "potrebbe avere con" -std = c ++ 11 ". (Sì, la risposta a quest'ultima in questo è "niente di speciale", ma la documentazione non lo dirà, e ci sono un sacco di strani casi angolari che non sono menzionati nella documentazione. "L'assenza di prove non è ' t prova di assenza ", e tutto il resto.)
RM

2
Questa modalità può essere selezionata con il -std=c++11flag della riga di comando o -std=gnu++11per abilitare anche le estensioni GNU. ( Fonte )
Videonauth,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.