首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何包含TR1?

如何包含TR1?
EN

Stack Overflow用户
提问于 2009-08-04 16:05:28
回答 6查看 32.6K关注 0票数 29

不同的编译器似乎对TR1有不同的想法。G++似乎只接受以下类型的包含:

代码语言:javascript
复制
#include <tr1/unordered_map>
#include <tr1/memory>
...

而Microsofts编译器只接受:

代码语言:javascript
复制
#include <unordered_map>
#include <memory>
...

就我对TR1的理解而言,微软的方式是正确的。

有没有办法让G++接受第二个版本?一般情况下,如何以可移植的方式处理TR1?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2009-08-04 17:35:36

在您的计算机上安装boost。

将以下目录添加到搜索路径中。

/boost/tr1/tr1

有关详细信息,请参阅此处boost tr1

现在,当您包含时,您将获得具有std::tr1::shared_ptr的tr1版本的内存,然后它将包含的特定于平台的版本,以获取所有常规功能。

票数 17
EN

Stack Overflow用户

发布于 2010-07-16 04:20:13

代码语言:javascript
复制
#ifdef _WIN32
    #include <unordered_map>
    #include <memory>
#else
    #include <tr1/unordered_map>
    #include <trl/memory>
#endif
票数 14
EN

Stack Overflow用户

发布于 2009-08-04 16:08:18

也许目前最好的方法是简单地使用boost库,因为在许多情况下,它们有类似于TR1特性的接口的替代品,只是位于不同的(但一致的)头路径和名称空间中。这样做的好处是可以在甚至还没有开始实现C++0x的编译器上工作。而且有很多有用的boost库根本不在TR1中:)

或者,在G++上,您可以尝试在命令行上传递--std=gnu++0x。这至少适用于和。然后使其在std::tr1中可用:

代码语言:javascript
复制
namespace std { namespace tr1 { using namespace std; } }

这自然是邪恶的。我强烈建议使用boost方法:)

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1228402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档