Boost.Predef つかってみた

リリース前から気になっていたんですが、すっかり忘れていたので簡単に試してみました。

[ソース]

#include <boost/config.hpp>
#include <boost/predef.h>
#include <iostream>

int
main(){
    std::cout << BOOST_COMPILER << std::endl;

#if BOOST_OS_WINDOWS
    std::cout << "OS is Windows." << std::endl;
#else
    std::cout << "OS is not Windows." << std::endl;
#endif

#if BOOST_COMP_CLANG
    std::cout << "Compiler is Clang." << std::endl;
#elif BOOST_COMP_MSVC
    std::cout << "Compiler is MSVC." << std::endl;
#else
    std::cout << "Compiler is unknow." << std::endl;
#endif

    return 0;
}

[出力]

Clang version 3.5 
OS is Windows.
Compiler is Clang.


とりあえず、OS とコンパイラの区別だけ試してみました。
他にもアーキテクチャやライブラリの判定なんかもコンパイル時に行えるみたいですね。

[boost]

  • ver 1.55.0

[コンパイラ]

  • clang++ (LLVM) 3.5 20131110(trunk)