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 |