使用コンパイラのチェック
#include <iostream> #if defined (_MSC_VER) # if (_MSC_VER == 1600) # define COMPILER_NAME "vc10" # # elif (_MSC_VER == 1500) # define COMPILER_NAME "vc9.0" # # elif (_MSC_VER == 1400) # define COMPILER_NAME "vc8.0" # # else # define COMPILER_NAME "unknown" # # endif # #elif defined (__GNUC__) # if(__GNUC__ == 4) # define COMPILER_NAME "gcc4.x" # # elif (__GNUC__ == 3) # define COMPILER_NAME "gcc3.x" # # else # define COMPILER_NAME "unknown" # # endif #else # define COMPILER_NAME "unknown" # #endif int main(){ std::cout << COMPILER_NAME << std::endl; return 0; }
msvc は、【_MSC_VER】、gcc は【__GNUC__】の定義で判断を行ないます。
上のソースでは、"==" で比較していますが、実際に使用する場合は、">=" の方がいいかも。
今回はやっていませんが、gcc の場合は【__GNUC_MINOR__】や【__GNUC_PATCHLEVEL__】などを見ればメジャー以下のバージョンも見れるみたいです。
その他のバージョンに関してはリンク先を参照してみてください。
[参照]
http://tech.ckme.co.jp/cpp/cpp_predef.shtml
http://www.ailight.jp/blog/sha256/archive/2009/03/08/27314.aspx