c++ boost官网 - 如何确定系统上的Boost版本?





boost下载 boost库 (7)


#include <boost/version.hpp>
#include <iostream>
#include <iomanip>

int main()
{
    std::cout << "Boost version: " 
          << BOOST_VERSION / 100000
          << "."
          << BOOST_VERSION / 100 % 1000
          << "."
          << BOOST_VERSION % 100 
          << std::endl;
    return 0;
}

更新:答案已修复。

有没有一种快速的方法来确定系统上Boost C ++库的版本?




测试升压1.51.0:

std::cout << "Using Boost "     
          << BOOST_VERSION / 100000     << "."  // major version
          << BOOST_VERSION / 100 % 1000 << "."  // minor version
          << BOOST_VERSION % 100                // patch level
          << std::endl;

输出:使用Boost 1.51.0

测试升压版本1.51.0到1.65.0




使用自制软件安装在OS X上的Boost在/usr/local/Cellar/boost/<version>/include/boost/version.hpp boost /usr/local/Cellar/boost/<version>/include/boost/version.hpp <version> /usr/local/Cellar/boost/<version>/include/boost/version.hpp (注意,该版本已经在路径中提到过)中具有所需的version.hpp文件。

我想在任何类UNIX系统上确定版本的最快方法是在/usr搜索boost

find /usr -name "boost"




根据你如何安装boost和你正在运行的操作系统,你也可以尝试以下方法:

dpkg -s libboost-dev | grep 'Version'






如果您只需要知道自己的信息,只需查看/usr/include/boost/version.hpp(Ubuntu 13.10)并直接阅读信息




对于未指定内存模型的语言,您正在编写处理器体系结构指定的语言内存模型的代码。 处理器可能会选择重新排序内存访问以获得性能。 因此, 如果您的程序有数据竞争(数据竞争是指多个核心/超线程可以同时访问同一内存),那么您的程序不是跨平台的,因为它依赖于处理器内存模型。 您可以参考Intel或AMD软件手册了解处理器如何重新排序内存访问。

非常重要的是,锁(以及带锁的并发语义)通常以跨平台的方式实现......因此,如果您在没有数据竞争的多线程程序中使用标准锁,那么您不必担心跨平台内存模型

有趣的是,C ++的Microsoft编译器已经获取/释放volatile的语义,这是一个C ++扩展,用于处理C ++中缺少内存模型的问题http://msdn.microsoft.com/en-us/library/12a04hfd(v=vs.80).aspx 。 但是,鉴于Windows只能在x86 / x64上运行,这并不是说很多(英特尔和AMD内存模型使得在语言中实现获取/发布语义变得简单而高效)。





c++ boost version