【发布时间】:2017-08-24 09:53:49
【问题描述】:
我在 Linux 机器 (Kubuntu 16.05),g++ 5.4.0 64bit 上交叉编译一些来自 Windows 的代码。使用 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
另外,在包含我添加 /user/include
我在这里缺少什么?我必须在项目中明确包含/usr/include/c++/5/bits/ 目录吗?
【问题讨论】:
-
如何设置标志?通过启用 C++11,您可能会禁用 C++14。
-
天啊,我现在感觉好傻。 @juanchopanza 你是对的。我从编译器选项中删除了 c++11,问题就消失了。 Code Lite 允许检查支持哪些 c++ 标准。我一直认为这些标准中的每一个都支持标准的特定功能:/ 谢谢!