2014-02-19 117 views
0

我目前正在爲AVR平臺編寫一些C++代碼,我想要禁用基本上不可複製的東西。既然我已經使用的C++ 0x功能我認爲要做到這一點的好辦法是使用=delete符:爲AVR編譯C++ 0x

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中,找到gccg++可執行文件,並與-v命令行參數運行它,然後告訴我們它報告的是哪個版本。請注意,GCC自4.4版以來支持的刪除功能()。

無論如何,編譯爲使用C++ 11層的功能,或者-std=c++1y-std=gnu++1y,使C++ 14(C++ 1Y)功能時,還必須添加-std=gnu++0x-std=c++11-std=gnu++11參數。