其他分享
首页 > 其他分享> > c – 在GCC和MSVC中使用TR1文库

c – 在GCC和MSVC中使用TR1文库

作者:互联网

我想使用现代版本的GCC和MSVC附带的TR1库,但有一些细微的差别:在GCC中,我不得不说

#include <tr1/memory>
std::tr1::shared_ptr<int> X;

而在MSVC我不得不说

#include <memory>
std::shared_ptr<int> X;

我有两个问题:1)MSVC是否自动在C 0x模式下运行(相当于GCC的std = c 0x),或者默认情况下它是否也在C 98/03模式下工作? 2)如何统一包含和命名空间?我正在考虑“INCLUDE_TR1(内存)”之类的预处理器宏或类似的东西.

为了澄清,我想使用传统的标准C 98/03;不是C 0x(否则没有问题).

对于任何建议我都非常感激!

解决方法:

> VC 2010仅在C 0x模式下运行;以前的版本没有C 0x支持.也就是说,VC 2010中的大部分标准库仍然基于TR1(例如std :: result_of<>使用TR1 result_of协议而不是基于decltype);事实上,VC 2010中的大部分标准库实际上并未在命名空间std中定义,而是在命名空间std :: tr1中定义,并使用using指令拉入命名空间std.
>使用Boost.TR1 – 根据您的平台#include相应的头文件,或者如果您的平台没有TR1支持,#include相应的Boost实现并使用声明将它们拉入命名空间std :: tr1.

标签:tr1,c,gcc,visual-c
来源: https://codeday.me/bug/20191001/1838612.html