2011-01-08 70 views
3

我正在研究大量使用最新C++ 0x语言和库功能的库。我主要是在Linux上用gcc4.6开发的,但是想在OS X上测试(因为苹果公司制造了出色的性能分析工具)。不幸的是,我发现任何版本的libstdC++与OS X的任何gcc4.6一起提供,我已经发现它们的<thread>功能已被禁用(请参阅here以了解如何解决此问题)。用Boost代替C++ 0x库功能

在此期间,有没有人有任何想法为微创(为我的图书馆)的方式,我可以用boost的线程库取代标准吗?我宁愿不诉诸于sed,因为我通过SVN共享此项目,并希望检查我的更改而不强制其他人切换到boost :: thread,boost :: mutex等。

回答

4

这不是一个标准的投诉代码,因为你不能改变空间std内,但它应该在大多数编译器工作:

#include <boost/your_headers.hpp> 
namespace std { 
    using boost::thread; 
    using boost::mutex; 
    // ... 
} 

剩下的代码不变。

+1

另一种方法可能是命名空间cxx0x = std;或者命名空间cxx0x = boost ;.这避免了与std混淆。你也可以做命名空间cxx0x {使用std :: mutex; }与命名空间cxx0x {使用boost :: mutex; } – 2011-01-08 23:29:58