我正在玩unique_ptr.在我的last post中,人们通过在编译期间指定-std = c 0x来帮助我编译使用此指针的程序.
现在我想知道是否有任何方法可以指示eclipse在自动完成时考虑c 11?
unique_ptr没有进入std :: namespace列表,也没有找到与unique_ptr相关的方法(reset,move …).
谢谢
瓦希德
最佳答案
“memory”标题(可能在/usr/include / c /4.9/memory中找到)只包含“unique_ptr.h”和“shared_ptr.h”(可能位于/usr/include / c /4.9/bits/unique_ptr. h和/usr/include / c /4.9/bits/shared_ptr.h)如果宏“__cplusplus”等于或大于“201103L”.检查memory.h,自己在第69行查看“#if”预处理器条件(或搜索字符串“#if __cplusplus> = 201103L”).
正如其他人所提到的,使用“-std = c 0x”或更高版本的c标准(-std = c 11或-std = c 14)进行编译可以解决编译错误,但不能解决eclipse索引和自动完成问题.
为了解决eclipse索引问题,我将“__cplusplus”预处理器宏添加到项目构建属性中,值为“201103L”,之后我刷新了索引;
要添加预处理器宏:
“右键单击项目资源管理器上的项目”>>属性>> C/C++一般>>预处理器包括>>条目>> GNU C> CDT用户设置条目>>添加…>>预处理器宏;
然后输入一个名为“__cplusplus”且值为“201103L”的宏;
之后,要刷新索引,请执行以下操作:
“右键单击项目资源管理器上的项目”>>索引>>重建;
Ps.:我在ubuntu 15.04 64bits上使用gcc 4.9.2和eclipse Luna(4.4.2)