GNU C++: unique_ptr.h 没有这样的文件或目录
GNU C++: unique_ptr.h no such file or directory
我正在从Linux机器(Kubuntu 16.05(,g++ 5.4.0 64位交叉编译一些代码。使用 Code Lite IDE 作为开发环境。 我有几行代码,我在其中初始化唯一的指针
std::make_unique
编译器抱怨错误:
错误:"make_unique"不是"std"的成员
我试图在标题中添加<memory>
和<unique_ptr.h>
。然后编译器抱怨它找不到<unique_ptr.h>
文件。有趣的是,当我单击以从编辑器中打开文件时,它会被发现并打开。该文件位于/usr/include/c++/5/bits/unique_ptr.h
我确保构建代码的编译器版本确实是 5.4,所以我不明白为什么它不支持开箱即用unique_ptr。我确保启用 C++11 和 C++14 标志:
-g;-O0;-std=c++14;-std=c++11;-Wall
另外,在包含中,我添加了/用户/包含
我在这里错过了什么?我是否必须在项目中显式包含/usr/include/c++/5/bits/
目录?
试试这些标志:-g -O0 -std=c++14 -Wall
. 请注意,分隔标志不需要分号。
编译器将采用最新的-std
条目,因此您有效地使用 C++11 而不是 C++14 进行编译。
正如您在这里看到的,在较新的标准禁用第一个声明的标准后启用-std=c++11
。仅启用 C++14 就足够了。
>C++11引入了std::unique_ptr
,但没有std::make_unique
(这打破了shared_ptr
/make_shared
的"对称性"(。
他们在C++14中修复了这个问题,并添加了std::make_unique
.
因此,如果在 C++11 模式下编译代码,则无法使用std::make_unique
。
正如其他人已经指出的那样,您需要使用-std
编译器选项设置最新的C++ 标准; 在这种情况下,-std=c++14
也启用std::make_unique
。
- .cpp和.h文件中的模板专用化声明
- 为什么两个不同的未命名名称空间可以共存于一个cpp文件中
- 文本文件中的单词链表
- CMake-按正确顺序将项目与C运行时对象文件链接
- 使用新行和不使用新行读取文件
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 挂起和取消挂起一个文件DLL
- 如何确定我已使用非编码文件到达 EOF?
- 命名空间中具有.h和.cpp文件的类
- 如何使用ndk-build.cmd构建Android.so文件
- 从包含m行的文件中提取n行,必要时(惰性地)重复该文件
- 读取文件并输入到矢量中
- 在C++中查找文件
- c++库的公共头文件中应该包含什么
- 用c++从输入文件中读取另一行
- Cppcheck生成xml转储文件
- 读取文件的最后一行并输入到链接列表时出错
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- 如何将内容数组写入文本文件?
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到