文法:
__LINE__
__FILE__
__DATE__
__TIME__
__cplusplus
__STDC__
以下のプリプロセッサ変数は、プリプロセッサによって次のように定義/置換されます:
__LINE__ と __FILE__ は、そのマクロ名の現れた行番号とファイル名に置換されます。__DATE__ は、月/日/年 形式のコンパイル年月日に置換されます。 実行時の年月日ではなく、コンパイル時の年月日である点に注意してください。__TIME__ は、時:分:秒 形式のコンパイル時刻に置換されます。 実行時の時刻ではなく、コンパイル時の時刻である点に注意してください。__cplusplus は、ソースコードがC++としてコンパイルされている時にのみ定義されているプリプロセッサ変数です。 いくつかの古いコンパイラでは、c_plusplusという名前でも定義されていました。__STDC__ は、ソースコードがCとしてコンパイルされており、コンパイラが標準Cに準拠しているなら必ず定義されています。 ソースコードがC++としてコンパイルされている場合には、このプリプロセッサ変数が定義されているかどうかは処理系依存です。以下の名称は、GCC独自仕様として予約されている名称です。 実際のところ、これらはプリプロセッサ変数ではないのですが (参考:magic)、同じように用いることが可能です:
__func__ は、コード上のその地点を含む、裸の関数名(コード上で書かれたとおりの関数名)に置換されます。__FUNCTION__ は、 __func__ の別名です。__PRETTY_FUNCTION__ は、裸の関数名に加えて戻り値型や引数型などの情報も含んだ、関数シグニチャに置換されます。