Boost.Predef OSを調べる

Boost 1.55.0から入ったBoost.Predefを使ってみます。今回はOSを調べるマクロです。

通常、環境ごとの設定を書くには、環境ごとに定義されているその環境独自のマクロを使用しますが、Boost.Predefでは、そのあたりを共通の命名規則でラップしてくれています。命名規則は「BOOST_OS_」 + 「OS名」です。名称にバージョンは含まれません。

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

int main()
{
    #if BOOST_OS_WINDOWS
        std::cout << "Windows" << std::endl;
    #elif BOOST_OS_MACOS
        std::cout << "Mac OS" << std::endl;
    #elif BOOST_OS_ANDROID
        std::cout << "Android" << std::endl;
    #endif
}

また、これらのOSマクロは、値としてバージョンを持っています。バージョン値は、BOOST_VERSION_NUMBER()関数マクロで指定した値と比較して使用します。が、OSマクロのバージョン値は、まだそれほど厳密に定義されてるわけではないようなので、バージョン値については次回あらためて紹介します。

参照:

宣伝: 『プログラミングの魔導書 Vol.3』 予約受付中です。
http://longgate.co.jp/books/grimoire-vol3.html