Ошибка С++ "nullptr не была объявлена в этой области" в Eclipse IDE
Я запускаю Eclipse Helios, и у меня установлен g++ - 4.6. Надеюсь, я не ошибаюсь, что g++ 4.6 реализует возможности С++ 11. Я создал проект С++, который использует ключевые слова nullptr и auto. Конструкция дает следующие ошибки: -
../{filename}.cpp:13:13: error: ‘nullptr’ was not declared in this scope
../{filename}.cpp:14:2: warning: ‘auto’ will change meaning in C++0x; please remove it [-Wc++0x-compat]
На самом деле он строился до вчерашнего дня. Я получаю их из ниоткуда сегодня. Пожалуйста, помогите мне решить эту проблему.
Ответы
Ответ 1
Наконец, выяснилось, что делать. Добавлен аргумент компилятора -std = С++ 0x в разделе "Свойства проекта" → C/С++ Build → Settings → Компилятор GCC С++ → Разное. Он работает сейчас!
Но как добавить этот флаг по умолчанию для всех проектов на С++? Кто-нибудь?
Ответ 2
Согласно странице GCC для С++ 11:
Чтобы включить поддержку С++ 0x, добавьте параметр командной строки -std = С++ 0x в вашу командную строку g++. Или, чтобы включить расширения GNU в дополнение к расширениям С++ 0x, добавьте -std = gnu ++ 0x в вашу командную строку g++. GCC 4.7 и более поздние версии поддерживают -std = С++ 11 и -std = gnu ++ 11.
Скомпилирован ли с помощью -std=gnu++0x
?
Ответ 3
Является ли это фактической ошибкой компилятора или ошибкой анализа кода? Несколько раз анализ кода может быть немного отрывочным и сообщать о недействительных ошибках.
Чтобы отключить анализ кода для проекта, щелкните правой кнопкой мыши на своем проекте в Проводнике проектов, нажмите "Свойства", затем перейдите на вкладку "Общие" C/С++, затем "Анализ кода". Затем нажмите "Использовать параметры проекта" и отключите те, которые вы не хотите.
Кроме того, вы уверены, что компилируете компилятор С++ 11?
Ответ 4
Перейдите в Настройки → Компилятор...
И добавьте флаг "Have g++ следуйте следующему стандарту языка С++ 0x ISO С++ [std = С++ 0x]
Ответ 5
Вы используете версию g++ 4.6, вы должны вызывать флаг -std = С++ 0x для компиляции
g++ -std = С++ 0x *.cpp -o output
Ответ 6
Я добавляю ", -std = С++ 0x" после "-c -fmessage-length = 0" в разделе "Свойства проекта" → C/С++ Build → Settings → Компилятор GCC С++ → Разное. Не забывайте добавлять запятую "," в качестве разделителя.