如何使用 Orwell Dev-C++ 编译 C++11 代码
How can I compile C++11 code with Orwell Dev-C++?
正在尝试编译以下代码:
#include <iostream>
#include <memory>
struct Foo {
Foo() { std::cout << "Foo::Foon"; }
~Foo() { std::cout << "Foo::~Foon"; }
void bar() { std::cout << "Foo::barn"; }
};
void f(const Foo &foo)
{
std::cout << "f(const Foo&)n";
}
int main()
{
std::unique_ptr<Foo> p1(new Foo); // p1 owns Foo
if (p1) p1->bar();
{
std::unique_ptr<Foo> p2(std::move(p1)); // now p2 owns Foo
f(*p2);
p1 = std::move(p2); // ownership returns to p1
std::cout << "destroying p2...n";
}
if (p1) p1->bar();
// Foo instance is destroyed when p1 goes out of scope
}
使用 Orwell Dev-c++ 5.3.0.3 会产生以下错误:
"unique_ptr"不是"std"的成员。
我该如何处理?
请确保在编译时提供正确的 -std 标志。Orwell Dev-C++ 使用的默认设置(不要传递任何 -std 选项)不会启用一些闪亮的新 C++11 函数,如 unique_ptr。修复非常简单:
- 对于非项目编译,请转到:编译器选项>>工具(选择编译器)>>>>>>代码生成>>设置(将"语言标准"设置为 C++11 选项)
- 有关项目编译,请转到:项目>>编译器>>代码生成>>(将"语言标准"设置为 C++11 选项)
下面是有关 -std 标志的更多信息:http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options
如您所见,GCC 默认使用 GNU 方言 C++03(似乎不支持 unique_ptr)。
最新版本的
Dev-C++ 附带 TDM-GCC 9.2.0,默认为 C++17。
相关文章:
- 创建LinkedList退出,返回代码为-11(SIGSEGV)
- 解除分配数组会导致退出 11 代码
- 从 C++11 代码中获取系统内存和 CPU 使用率
- 我需要用c ++ 98重写c ++ 11代码,c ++ 11正在使用lambda函数[&](const Output & o
- 从远程主机中编译C 11代码的问题
- 构建 C++11 代码时 Coverity 中的内部错误
- 尝试将 C++11 代码转换为 C++03 时默认函数模板参数出错
- 如何将C++11代码编译为网络汇编
- 如何在不提升的情况下将 C++11 代码转换为 C++98
- 如何使用 Orwell Dev-C++ 编译 C++11 代码
- 非C++11程序中的C++11代码/库
- 如何让g++使用move构造函数编译c++11代码
- 有没有一种方法可以将C++11代码重构为C++代码,这些代码可以由能力较弱的编译器编译
- Sublime Text 2运行c++ 11代码
- 为什么包含rand()的c++ 11代码在多个线程中比在一个线程中慢?
- 针对Visual Studio 2008的c++ 11代码的兼容性
- 用Clang编译c++11代码的不完整类型
- 如何用android ndk和eclipse编译c++11代码
- 嵌入式 C++11 代码 — 我需要易失性代码吗?
- 如何在 DDD(或 gdb)中使用unique_ptr调试 C++11 代码