予め定義されたマクロは、コンパイラによって提供されるマクロ定義です。
コンパイラ関連のマクロ#
異なるコンパイラは、それぞれ独自の一連の予め定義されたマクロを提供します。
- 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 アーキテクチャ
もしも不備があれば、ご指摘ください