Twitterに投稿 はてなブックマークに追加 Yahoo!ブックマークに追加 Google Bookmarksに追加

目次 >> C、C++ >> Tips

コンパイラの種類とバージョンを知るためのpre-defineされたマクロは?

コンパイルする際のコンパイラのバージョンや種類をマクロによって区別することができる。

GCCの場合

__GNUC__が定義されている。
__GNUC__にはメジャーバージョン番号が、__GNUC_MINOR__にはマイナーバージョン番号が、__GNUC_PATCHLEVEL__にはパッチレベルが入っている。__GNUC_PATCHLEVEL__はGCC3より導入された。

#ifdef __GNUC__
cout<<"GNU C/C++ "<<__GNUC__<<"."<<__GNUC_MINOR__;
    #ifdef__GNUC_PATCHLEVEL__
    cout<<"."<<__GNUC_PATCHLEVEL__;
    #endif
cout<<endl;
#endif

Intelコンパイラの場合

__INTEL_COMPILERが定義されている。
__INTEL_COMPILERには、マイナーバージョンも含めてバージョン番号を100倍した数値が入っている。
また、__INTEL_COMPILER_BUILD_DATEはビルドされた日付が入っている。

#ifdef __INTEL_COMPILER
cout<<"Intel Compiler "<<__INTEL_COMPILER/100.0<<" build "<<__INTEL_COMPILER_BUILD_DATE<<endl;
#endif

Borland C++ / C++ Builderの場合

__BORLANDC__が定義されている。

CUDA(nvcc)の場合

__CUDACC__が定義されている。



本文中のFC4はFedora ProjectのFedora Core 4を、FC5はFedora Core 5を、FC6はFedora Core 6をopenSUSEはNovellのSUSE Linux OSSを表します。Fedora7以降は、単にFedora7、Fedora8、Fedora9、Fedora10、Fedora11、Fedora12、Fedora13、Fedora14、Fedora15と表示しています。Ubuntuは、必要に応じて10.04、11.04のようにバージョン番号をつけて区別しています。MandrivaはMandriva Linuxを表します。

ここに登場するドメイン名やIPアドレスなどはフィクションです。実在の人物・団体等とは一切関係がありません。
実際に使用する際は、各自の環境に合わせて書き換えてください。
もし何か間違いなどありましたらこちらからご連絡ください
リンクに許可は不要です。
Copyright (C) 2011 Chikuma Engineering Co., Ltd. All Rights Reserved.