ISO 規格事前定義マクロの名前

C および C++ は両方とも、ISO C 言語規格で指定されている次の マクロ名を事前定義しています。 __FILE__ および __LINE__ の場合以外は、事前定義マクロの値が変換単位全体を通して変化することがありません。

マクロ名
説明

 __DATE__ 
ソース・ファイルがコンパイルされた日付が入っている文字ストリング・リテラル。

ソース・プログラムの一部であるインクルード・ファイルをコンパイラーが処理する と、__DATE__ の値が変わります。 日付は次の形式です。

      "Mmm dd yyyy"

ここで、

Mmm
月を省略形式 (JanFebMarAprMayJunJulAugSepOctNov、また は Dec) で表します。
dd
日を表します。日が 10 より小さい場合、最初の d はブランク文字になります。
yyyy
年を表します。

 __FILE__ 
ソース・ファイルの名前が入った文字ストリング・リテラル。

ソース・プログラムの一部であるインクルード・ファイルをコンパイラーが処理すると、__FILE__ の値が変わります。 これは、#line ディレクティブを使用して設定できます。

 __LINE__ 
現行のソース行番号を表す整数

コンパイラーがソース・プログラムの後続の行を処理すると、 コンパイル中に __LINE__ の値が変わります。 これは、#line ディレクティブを使用して設定できます。

 __STDC__ 
C の場合、整数 1 であると、C コンパイラーが ISO 規格をサポートすることを示します。 (マクロが未定義の場合、#if 文で使用されると、マクロが整数値 0 を 持っているかのように動作します。)

C++ の場合、このマクロは、値 0 (ゼロ) を持つように事前定義されます。 これは、C++ 言語が C の正しいスーパーセットではなく、コンパイラーは、ISO C に準拠しないことを示します。

 __STDC_HOSTED__ 
この C99 マクロの値は 1 です。これは、C コンパイラーがホストされたインプリメンテーション であることを示しています。

 __STDC_VERSION__ 
long int 型の整数定数: C89 言語レベル では 199409L、C99 では 199901L。

 __TIME__ 
ソース・ファイルがコンパイルされた時刻が入っている 文字ストリング・リテラル。

ソース・プログラムの一部であるインクルード・ファイルをコンパイラーが処理する と、__TIME__ の値が変わります。 時刻は次の形式です。

      "hh:mm:ss"

ここで、

hh
時間を表します。
mm
分を表します。
ss
秒を表します。

 __cplusplus 
C++ プログラムの場合、このマクロは、長整数リテラル 199711L に展開し、コンパイラーが C++ コンパイラーであることを示します。C プログラムの場合、このマクロは定義されていません。このマクロ名には、末尾に下線がないことに注意してください。

言語標準で必要とされる事前定義マクロのほか、事前定義マクロ __IBMC__ は、C コンパイラーのレベルを示しています。 事前定義マクロ __IBMCPP__ は、C++ コンパイラーのレベルを示しています。

値は、VRM の形式の整数です。ここで、

V
バージョン番号を表します。
R
リリース番号を表します。
M
変更番号を表します。

関連参照

IBM Copyright 2003