C および C++ は両方とも、ISO C 言語規格で指定されている次の
マクロ名を事前定義しています。
__FILE__ および __LINE__
の場合以外は、事前定義マクロの値が変換単位全体を通して変化することがありません。
- マクロ名
- 説明
- __DATE__
- ソース・ファイルがコンパイルされた日付が入っている文字ストリング・リテラル。
ソース・プログラムの一部であるインクルード・ファイルをコンパイラーが処理する
と、__DATE__ の値が変わります。
日付は次の形式です。
"Mmm dd yyyy"
ここで、
- Mmm
- 月を省略形式 (Jan、Feb、Mar、Apr、May
、Jun、Jul、Aug、Sep、Oct、Nov、また
は 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
- 変更番号を表します。
関連参照
