C言語入門:__FILE__
Cには、ソースコードが書かれているファイル名を文字列としてプログラムに埋め込める __FILE__ という組み込みマクロが用意されています。
最初のうちは、単一のファイルでプログラムを書くことが中心になると思いますが、Cに慣れるにつれて複数のファイルにまたがる大きなプログラムを書くようになると思います。 そのような時に、__FILE__ はデバッグに欠かせない存在です。
__FILE__を利用したサンプル
以下のサンプルは__FILE__を使った例です。 プリプロセッサが__FILE__部分を自動的にファイル名に変換してからコンパイルされます。
#include <stdio.h>
int
main()
{
printf("filename: %s\n", __FILE__);
return 0;
}
コンパイル前のソースコードのファイル名がhoge.cだった場合、このプログラムを実行すると以下のような結果が表示されます。
> ./a.out
filename: hoge.c
このように、__FILE__が自動的にソースコードのファイル名へと変換されています。
プログラムを書く時には、この__FILE__をデバッグ用のメッセージに入れておくと便利です。 予期しないエラーが発生したときに「どのファイルに記述された部分を実行しているときのエラーメッセージだろうか?」というのを把握しやすくなります。
__FILE__の他に良く使う組み込みマクロとして、行番号になる__LINE__というものもあります。 デバッグメッセージ中に__FILE__と__LINE__を両方利用するのは、半ば定石と言えます。
おまけ