Невозможно установить Eclipse Juno C ++ с std = c ++ 11

У меня Eclipse Juno C ++ (идентификатор сборки: 20120614-1722). Я пытаюсь установить аргументы вызова компилятора с помощью инструкции -std = c ++ 11 или -std = c ++ 0x, но при компиляции кода ниже. В Eclipse Juno нет «Настройки инструмента» (по крайней мере, для Mac), поэтому я не могу перейти в «Сборка C / C ++ -> Настройки -> Настройки инструмента». Мой компилятор - GCC 4.8.0

#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
int main(void) {
    vector<string> v = {"a","b","c"};
    for(string s: v){
        cout << s << endl;
    }
    return 0;
}

Я получил:

HelloWorld.cpp:16:33: error: could not convert ‘{"a", "b", "c"}’ from ‘<brace-enclosed initializer list>’ to ‘std::vector<std::basic_string<char> >’
HelloWorld.cpp:17:16: error: range-based ‘for’ loops are not allowed in C++98 mode

person Roman Kagan    schedule 10.07.2012    source источник
comment
Какой реальный компилятор и стандартную библиотеку вы используете?   -  person ildjarn    schedule 10.07.2012
comment
Вы гарантировали, что установили параметры для g ++ (а не для другой части цепочки инструментов)? : do this: C / C ++ Build - ›Настройки -› Настройки инструмента - ›Компилятор GCC C ++ -› Разное - ›Другие флаги. В конце поставьте -std = c ++ 0x.   -  person Carsten Greiner    schedule 11.07.2012
comment
В Eclipse Juno нет настроек инструментов.   -  person Roman Kagan    schedule 12.07.2012
comment
Поскольку GCC 4.8, очевидно, не является стандартным системным компилятором, уверены ли вы, что Eclipse действительно вызывает этот компилятор при сборке и не использует по умолчанию системный? Если ваш проект не является проектом Makefile, у вас должен быть Project- ›Properties-› C / C ++ Build- ›Settings, и есть вкладка для Tool Settings, где вы можете настроить абсолютный путь к компилятору, а также параметры командной строки.   -  person jogojapan    schedule 14.07.2012


Ответы (3)


вы можете выполнить шаги, описанные в этом ответе: Eclipse CDT C ++ 11 / Поддержка C ++ 0x

Одна из возможностей заключается в том, что ваши параметры были применены не к той части цепочки инструментов.

person Carsten Greiner    schedule 11.07.2012

Я столкнулся с точно такой же проблемой. Пожалуйста, проверьте, есть ли в вашем проекте пользовательский "makefile" ( *.mk ). Если у него есть этот «make-файл», поместите следующее в «make-файл» и скомпилируйте.

"LOCAL_CFLAGS: = -fexceptions -std = c ++ 0x -std = c ++ 11"

PS: LOCAL_CFLAGS предназначен для флагов компилятора, которые вы можете поместить в «xxx> Разное». И, честно говоря, я не знаю, как решить эту проблему, если в вашем проекте нет собственного "makefile". Но у Eclipse Juno буквально нет пути, описанного выше.

person Aung Pyae    schedule 23.04.2013

Причина, по которой вы не видите Параметры инструмента, заключается в том, что при создании проекта вы должны выбрать Executable вместо GNU Autotools.

person Lance Mao    schedule 07.08.2012
comment
Если вам нужны автоинструменты и их правильная настройка, ваш код компилируется нормально, но eclipse по-прежнему показывает синтаксические ошибки. Отказ от использования автоинструментов - не решение проблемы. - person matthias krull; 29.10.2012