C言語には(すくなくとも、ANSI C標準には)組み込みマクロが用意されています
これは、最初から定義されているマクロです
組み込みマクロは、コンパイラによっては特有のマクロが追加されていたりするかもしれません
ここでは、ANSI C標準が定める組み込みマクロを紹介します
○__FILE__と__LINE____FILE__は、現在コンパイルしているファイルの名前を表します。 __LINE__は、現在コンパイルしている行の行番号を表します。
__FILE__ は文字列、__LINE__は正数値になります。
printf("%s %d",__FILE__, __LINE__);
○__DATE__と__TIME____DATE__は、現在の日付を、__TIME__は、現在の時刻を表します。
__DATE__は「年 月 日」の形式で、__TIME__は「時:分:秒」の形式です。
どちらも文字列定数として扱います。
printf("%s %s",__DATE__, __TIME__);
○__STDC____STDC__は、コンパイラが規格に準拠しているかどうかを調べます。規格に準拠していれば1になります。準拠していない場合には、そもそもこのマクロが定義されていません。
注意すべきは、このマクロが定義されていたとしても、そのコンパイラが完全な形で規格に準拠できているとは限らないということです。
よって、このマクロを完全に当てにしてはいけません。(使い道があまりない)
最後に、
事前定義マクロもマクロなので、#ifdefで定義されているかどうかを調べられます。ただし、#undefによって無効化することはできません。
[Quote]:
http://wisdom.sakura.ne.jp/programming/c/c40.htmlhttp://www.geocities.jp/ky_webid/c/053.html