Неожиданный результат при инициализации переменной в C ++ фигурными скобками - PullRequest
0 голосов
/ 20 июня 2020

Я использую атом для практики C ++ (я новичок). Я только что научился инициализировать следующие переменные:

#include <iostream>

using namespace std;

int main() {

  int myInt {};
  
  return 0;
}

Когда я создаю и запускаю предыдущий код в codelite, я не получаю ошибок. Однако, если я компилирую файл атома dailyPractice10. cpp с помощью терминала MacBook (zsh), я получаю следующую ошибку:

dailyPractice10.cpp:7:12: error: expected ';' at end of declaration
int myInt {};
        ^
        ;
1 error generated.

Я использую следующую команду, чтобы скомпилировать его на терминале:

g ++ -o dailyPractice10 dailyPractice10. cpp (компилирует)

. / DailyPractice10 (запускает программу)

Есть ли у кого-нибудь отзывы, почему этот код работает в codelite, но не не компилируется в терминале?

Ответы [ 2 ]

0 голосов
/ 15 августа 2020

Ключом к решению этой проблемы является установка стандартов C ++ 11 (или выше) при построении кода. На вкладке консоли среды IDE перед ошибкой создается следующий вывод. Обратите внимание, что при построении кода не определяется стандарт:

make all 
Building file: ../1.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"1.d" -MT"1.o" -o "1.o" "../1.cpp"

Нам нужно добавить флаг - std = c ++ 1x в команду g ++. Следующее решение предназначено для тех, кто использует Eclipse IDE и компилятор MacOSX C ++:

  1. Щелкните правой кнопкой мыши проект в «Project Explorer».
  2. Go выберите «Свойства»> C / C ++ Build> Settings.
  3. На вкладке «Tool Settings» найдите «G CC C ++ Compiler»> «Miscellaneous»

в тексте «Other Flags» измените текст так, чтобы он выглядел так:

-std = c ++ 17 - c -fmessage-length = 0

Если вы собираетесь использовать любой другой стандарт C ++, замените «c ++ 17» на стандарт по вашему выбору (например, c ++ 20).

Применить изменения. Запустите Clean и снова выполните сборку.

0 голосов
/ 20 июня 2020

Поскольку эта функция добавлена ​​из c ++ 11.

, если вы хотите попробовать команду ниже, она будет работать.

$ g++ -std=c++0x -o dailyPractice10 dailyPractice10.cpp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...