2014-02-19 74 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参数。