定義済みマクロ

Last-modified: 2017-01-17 (火) 13:59:37

参考

標準規格

C言語

__DATE__
ソースのコンパイル日付
__FILE__
ソースのファイル名
__func__
関数名(Visual Studio.NET以降では、__FUNCTION__)
__LINE__
行番号
__STDC__
標準Cに従っている際に定義されている(ifdefで使う)
__STDC_HOSTED__
整数1
__STDC_IEC_559__
IEC60559浮動小数点仕様に従っている際に定義されている
__STDC_IEC_559_COMPLEX__
IEC60559互換の複素数仕様に従っている際に定義されている
__STDC_ISO_10646__
?→http://seclan.dll.jp/c99d/c99d02.htm#dt19990412
__STDC_VERSION__
C言語のバージョン
__TIME__
ソースのコンパイル時刻
__TIMESTAMP__
ソースの保存日時

C++言語

__cplusplus
C++ソースとしてコンパイルしようとするときに定義されている

コンパイラ別

ARM CC

__CC_ARM
コンパイラ識別用(コンパイラ名)
__ARMCC_VERSION
コンパイラバージョン
__arm
armcc, tcc, armcpp, tcpp を使用している場合に定義される。
__BIG_ENDIAN
ビッグエンディアン向け環境で定義される。
__embedded_cplusplus
EC++ モード時に定義される。
__sizeof_int
プリプロセッサ版 sizeof(int)
__sizeof_long
プリプロセッサ版 sizeof(long)
__sizeof_ptr
プリプロセッサ版 sizeof(void*)

Borland C++ Compiler / TurboC / C++ Builder

__BORLANDC__
コンパイラ識別用
__BCPLUSPLUS__
C++ソースとしてコンパイルしようとするときに定義されている
__DLL__
WDオプション使用時
__FUNC__
関数名
_WCHAR_T
wchar_tが組込型として扱われている際に定義されている

CINT

__CINT__
コンパイラ識別用

Comeau C++

__SIGNED_CHARS__
charと書いたものは「signed char」になる
_WCHAR_T
wchar_tが組み込み型として扱われている
_BOOL
boolが組み込み型として扱われている
__ARRAY_OPERATORS
配列に対するnew/deleteが許されている
__EDG_RUNTIME_USES_NAMESPACES
ランタイムで名前空間が使われている
__EDG_IMPLICIT_USING_STD
?
__EDG__
コンパイラ識別用
__COMO__
コンパイラ識別用
__EDG_VERSION_
コンパイラ識別用
__COMO_VERSION__
コンパイラ識別用

Compaq C

unix
Operating System Name
__unix__
Operating System Name
__osf
Operating System Name
SYSTYPE_BSD
Operating System Name
_SYSTYPE_BSD
Operating System Name
__alpha
Architecture name
__DECC
Product name
__DECC_VER
Product name
LANGUAGE_C
Product name
__LANGUAGE_C__
Product name

Cygwin

__CYGWIN__
コンパイラ識別用

DIGITAL C++

_BOOL_EXISTS
boolがキーワードとして扱われている際に定義される
__DECCXX
コンパイラ識別用
__INITIAL_POINTER_SIZE
ポインタのサイズ(64bit環境の識別用?)
__alpha
システム識別名
__host_alpha
システム識別名
__osf__
システム識別名
__unix
システム識別名
__unix__
システム識別名

Digital Mars C++

__DMC__
コンパイラ識別用

Emx GNU C

__EMX__
コンパイラ識別用

GNU C (GCC)

__GNUC__
コンパイラ識別用

Intel® C++ Compiler

__BASE_FILE__
ソースファイル名
__EDG__
?
__EDG_VERSION__
?
__ELF
?
__EXCEPTIONS
?
__GNUC
?
__gnu_linux__
?
__GNUC_MINOR__
?
__GNUC_PATCHLEVEL__
?
__GXX_ABI_VERSION
?
__i386
?
i386
?
__ia64
?
__ia64__
?
ia64
?
__ICC
コンパイラ識別用。バージョン情報
__INTEL_COMPILER
コンパイラ識別用
__INTEL_COMPILER_BUILD_DATE
コンパイラがビルドされた日付
__INTEL_CXXLIB_ICC
?
__INTEL_RTTI__
?
__INTEL_STRICT_ANSI
?
_INTEGRAL_MAX_BITS
?
__itanium__
?
__linux
?
__linux__
?
linux
?
__LONG_DOUBLE_SIZE__
?
__LONG_MAX
?
__lp64
?
__LP64__
?
_LP64
?
__NO_INLINE__
?
__NO_MATH_INLINES
?
__NO_STRING_INLINES
?
__OPTIMIZE__
?
: __PIC__
: __pic__
_PGO_INSTRUMENT
?
__PTRDIFF_TYPE__
?
__REGISTER_PREFIX__
?
__SIGNED_CHARS__
?
__SIZE_TYPE__
?
__unix
?
__unix__
?
unix
?
__USER_LABEL_PREFIX__
?
__VERSION__
?
__WCHAR_T
?
__WCHAR_TYPE__
?
__WINT_TYPE__
?

Microsoft Quick C

_QC
コンパイラ識別用

Microsoft Visual Studio.NET

_ATL_VER
ATLのバージョン
_CHAR_UNSIGNED
Jオプション使用時。charの既定が「unsigned char」になる。
__CLR_VER
CLRのバージョン
__cplusplus_cli
clr、clr:pure、clr:safeオプション使用時
__COUNTER__
?→http://msdn2.microsoft.com/en-us/library/b0084kay.aspx
_CPPLIB_VER
C++標準ライブラリのバージョン(Dinkumwareヘッダが提供?)
_CPPRTTI
GRオプション使用時。RTTI使用可能。
_CPPUNWIND
GXオプション使用時。例外ハンドリング使用可能。
_DEBUG
LDd、MDd、MTdオプション使用時。デバッグビルド時。
_DLL
MD、MDdオプション使用時。DLLプロジェクトの時。
__FUNCDNAME__
関数のリンク名
__FUNCSIG__
関数の定義(シグネチャ)
__FUNCTION__
関数名(C99における__func__と同等)
_INTEGRAL_MAX_BITS
整数型の最大値。
_M_ALPHA
DEC ALPHAプラットフォーム(サポート外)
_M_CEE
clr(clr:oldSyntax、clr:safeなども)オプション使用時。
_M_CEE_PURE
clr:pureオプション使用時。
_M_CEE_SAFE
clr:safeオプション使用時。
_M_IX86
x86環境。
_M_IA64
Itaniumプロセッサ64ビット環境。
_M_IX86_FP
archオプション使用時。
_M_MPPC
Power Macintosh環境。
_M_MRX000
MIPS環境。
_M_X64
x64環境。
_MANAGED
clrオプション使用時。
_MFC_VER
MFCのバージョン。
_MSC_EXTENSIONS
Zeオプション使用時。Zaもかな? 言語拡張が有効。
_MSC_VER
コンパイラ識別用。コンパイラバージョン。(1310が.NET2003、1400が2005、1500が2008)
_MSVC_RUNTIME_CHECKS
RTCオプション使用時。
_MT
MD、MDd、MT、MTdオプション使用時。
_NATIVE_WCHAR_T_DEFINED
Zc:wchar_tオプション使用時。wchar_tが組み込み型。
_OPENMP
openmpオプション使用時。OpenMPサポートあり。
_VC_NODEFAULTLIB
Zlオプション使用時。
_WCHAR_T_DEFINED
Zc:wchar_tオプション使用時。wchar_tが組み込み型。
__WIN32__
32ビット版Windowsアプリケーションで定義されている(コンソール、GUI両方)
_WIN32
32ビット版Windowsアプリケーションで定義されている(コンソール、GUI両方)
__WIN64__
64ビット版Windowsアプリケーションで定義されている(コンソール、GUI両方)
_WIN64
64ビット版Windowsアプリケーションで定義されている(コンソール、GUI両方)
_Wp64
Wp64オプション使用時。

Mix Power C

__POWERC
コンパイラ識別用

Objective-C

__OBJC__
コンパイラ識別用

OpenC++ Compiler

__opencxx
コンパイラ識別用

Renesas CC-RL Compiler

__RENESAS_VERSION__
コンパイラ識別用

Symantec C++

__SC__
コンパイラ識別用

Watcom C/C++

__WATCOMC__
コンパイラ識別用

Zortech C/C++

__ZTC__
コンパイラ識別用