予め定義されたマクロは、コンパイラによって提供されるマクロ定義です。
コンパイラ関連のマクロ#
異なるコンパイラは、それぞれ独自の一連の予め定義されたマクロを提供します。
- GCC
__GNUC__
:GCC のメジャーバージョン番号。__GNUC_MINOR__
:GCC のマイナーバージョン番号。__GNUC_PATCHLEVEL__
:GCC のパッチレベル番号。
- Clang
__clang__
:Clang コンパイラを使用している場合に定義されます。__clang_major__
:Clang のメジャーバージョン番号。__clang_minor__
:Clang のマイナーバージョン番号。__clang_patchlevel__
:Clang のパッチレベル番号。
- MSVC
_MSC_VER
:MSVC のバージョン番号。_MSC_BUILD
:MSVC のビルド番号。
オペレーティングシステム関連のマクロ#
- Windows
_WIN32
:32 ビットおよび 64 ビットの Windows システムの両方で定義されます。_WIN64
:64 ビットの Windows システムでのみ定義されます。
- Unix または Unix ライク
__unix__
:Unix および Unix ライクなシステム(例:Linux)で定義されます。__APPLE__
:macOS および iOS システムで定義されます。__linux__
:Linux システムで定義されます。__FreeBSD__
:FreeBSD システムで定義されます。__OpenBSD__
:OpenBSD システムで定義されます。__NetBSD__
:NetBSD システムで定義されます。__DragonFly__
:DragonFly BSD システムで定義されます。__sun
:Solaris システムで定義されます。__hpux
:HP-UX システムで定義されます。__sgi
:IRIX システムで定義されます。__AIX
:AIX システムで定義されます。
- その他
__ANDROID__
:Android プラットフォームで定義されます。__CYGWIN__
:Cygwin 環境で定義されます。
標準ライブラリ関連のマクロ#
__cplusplus
:コンパイラが C++ コードをコンパイルしているかどうかを示すために使用されます。コンパイラが C++ コードをコンパイルしている場合、このマクロの値はゼロ以外の値になります。それ以外の場合、このマクロは未定義です。__STDC__
:コンパイラが C 規格に従っているかどうかを示すために使用されます。コンパイラが C 規格に従っている場合、このマクロの値は 1 になります。それ以外の場合、このマクロは未定義です。__STDC_VERSION_
:C 規格のバージョン。
ハードウェアアーキテクチャ関連のマクロ#
__arm__
:arm アーキテクチャ__x86_64__
:x86_64 アーキテクチャ
もしも不備があれば、ご指摘ください