2014-02-19 2 views
0

В настоящее время я пишу некоторый код C++ для платформы AVR, и я хочу отключить что-то, что принципиально не копируется. Учитывая, что я уже использую C++ 0x особенности, которые я думал, что хороший способ сделать это было бы использовать =delete спецификатор:Компиляция C++ 0x для AVR

write_only(write_only const&) = delete; 

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

error: invalid pure specifier (only `= 0' is allowed) before ';' token 

Это говорит о том, что данная особенность языка C++ 0x не поддерживается avr-gcc. Я что-то делаю неправильно? Если нет, то каково наилучшее обходное решение для этого?

Я использую WinAVR-20100110 для компиляции.

+0

Какая версия вашего компилятора? –

+0

@JoachimPileborg, я использую WinAVR-20100110, Что касается того, какая версия GCC основана на я, я немного не уверен. У меня есть подозрение, что на самом деле это может быть gcc 4.3.2. – shuttle87

ответ

3

WinAVR устарел, вместо этого используйте Atmel Studio.

Если вы действительно хотите продолжить работу с WinAVR, найдите gcc или g++ исполняемый файл и запустите его с помощью аргумента командной строки -v, а затем сообщите нам, какую версию он сообщает. Обратите внимание, что удаленные функции поддерживаются в GCC с версии 4.4().

Во всяком случае, вы также должны добавить -std=gnu++0x или -std=c++11 или -std=gnu++11 параметров при компиляции использовать C++ 11 функций, или -std=c++1y или -std=gnu++1y для включения C++ 14 (C++ 1Y) функции.

Смежные вопросы