Як використовувати C ++ 11 з g ++?


21

Зараз я набираю весь код у gedit і використовую термінал для складання моїх програм. Для цього я набираю:

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

І це працює. Однак він не використовує C ++ 11. Як я можу перевірити свою версію C ++, а також компілювати через термінал, використовуючи C ++ 11?



Чи потрібно завжди включати -std = c ++ 11 чи є така установка, щоб кожен раз, коли я компілював її, автоматично виконував позов c ++ 11 або
Французький Майк

Відповіді:


53

Це ви можете зробити, використовуючи -std=c++11прапор. Ось приклад:

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

Цей режим можна вибрати за -std=c++11допомогою прапора командного рядка або -std=gnu++11також увімкнути розширення GNU. ( Джерело )

Пояснення інших прапорів дивіться нижче. Я глибоко вірю, що використання принаймні цих прапорів з помилками полегшить ваше життя в довгостроковій перспективі. Після того, як ви краще зрозумієте, що робить ваш сценарій, ви можете опустити попередження, якщо це потрібно для досягнення результату, але це не повинно бути стандартом. Сподіваюся, це вам допоможе. Ось хороше місце, щоб почати читати.

  • -Wall - вмикає всі основні попередження.
  • -Wextra - дозволяє інші важливі попередження.
  • -Werror- перетворіть усі попередження на помилки, у результаті чого компіляції виходять з ладу, якщо повідомляються про якісь попередження.

Джерела:

  1. GCC: Резюме варіантів
  2. GCC: параметри запиту або придушення попереджень

5
Спасибі! Ви не хочете пояснити, яку мету в цій команді виконують "-Wall" та "-Werror"?

1
Додав це до моєї відповіді.
Videonauth

7
@ dhaneku.b: Чому не читати документацію? Ось для чого це.
Гонки легкості з Монікою

9
@LightnessRacesinOrbit Оскільки документація не обов'язково пояснює, чому Videonauth вважає важливим їх додати, незважаючи на те, що вони не були в початковому прикладі командного рядка, або обов'язково пояснюють, яка важлива взаємодія "-Wall" і " -Werror "може мати" -std = c ++ 11 ". (Так, відповідь останнього в цьому - "нічого особливого", але документація цього не скаже, і є купа дивних кутових справ, про які в документації не йдеться. "Відсутність доказів не є" t доказ відсутності », і все таке.)
RM

2
Цей режим можна вибрати за -std=c++11допомогою прапора командного рядка або -std=gnu++11також включити розширення GNU. ( Джерело )
Videonauth
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.