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