Boost.Predefでコンパイラを調べるには、BOOST_COMP_
プレフィックスの付いたマクロを使用します。GCCならBOOST_COMP_GNUC
、ClangならBOOST_COMP_CLANG
です。
これらのマクロは値としてバージョンを持っているので、以下のようにバージョン判定を書けます。
#include <iostream> #include <boost/predef.h> int main() { #if BOOST_COMP_GNUC && BOOST_COMP_GNUC >= BOOST_VERSION_NUMBER(4, 8, 1) std::cout << "新しいGCC" << std::endl; #elif BOOST_COMP_CLANG && BOOST_COMP_CLANG >= BOOST_VERSION_NUMBER(3, 4, 0) std::cout << "新しいClang" << std::endl; #endif }
バージョン判定に使用するBOOST_VERSION_NUMBER()
関数マクロには、メジャーバージョン、マイナーバージョン、パッチレベルの順に指定します。このマクロは、Boostが持っている各種バージョン情報との比較だけに使うのはもったいないくらいに便利なので、自分が書いているアプリケーションのバージョン情報に、このマクロを使用してみてもよいでしょう。
#define MY_APPLICATION_VERSION_NUMBER BOOST_VERSION_NUMBER(1, 5, 2)
参照:
宣伝: 『プログラミングの魔導書 Vol.3』 予約受付中です。 http://longgate.co.jp/books/grimoire-vol3.html |