C プログラムを使用して現在の C ファイルを表示したいと思います。で実行ファイル名が取得できることは知っていますargv[0]
。'hello.c'
しかし、たとえばファイル名が必要です。出来ますか?
2 に答える
1 つのプログラムは、複数のC ファイルで構成できます。それで、あなたはどれを探していますか?
この__FILE__
ため、マクロが作成されました。プリプロセッサによって、コンパイル中の現在のソース (.C) ファイルの名前に置き換えられます。
main.c
#include <stdio.h>
int main(int argc, char** argv)
{
printf("Executable name: %s\n", argv[0]);
printf("This is %s() from %s, line %d\n",
__FUNCTION__, __FILE__, __LINE__);
one();
return 0;
}
one.c
#include <stdio.h>
void one(void)
{
printf("This is %s() from %s, line %d\n",
__FUNCTION__, __FILE__, __LINE__);
}
出力(実行可能ファイル名が「hello.exe」であると仮定):
Executable name: hello.exe
This is main() from main.c, line 4
This is one() from one.c, line 3
以下も参照してください。
Windows を使用していて".exe"
、プログラムに拡張機能がある場合は、その拡張機能を".c"
. LinuxまたはOSXを使用している場合は、単に追加しますが、その文字列にはそのためのスペースが割り当てられないため、に".c"
直接追加しないでください。argv[0]
代わりに新しい文字列を作成してください。
ただし、これはすべての状況で機能するとは限りません。実際のソース ファイルと実行可能ファイルの名前はもちろん異なる場合があり、実行可能ファイルがソース ファイルと同じフォルダにあるとは限りません。ソース ファイルの実際の名前を取得するには、__FILE__
マクロを使用します。VisualC++ を使用している場合は、コンパイラにフラグを追加して、__FILE__
マクロでフル パスを使用するように指示できます。この MSDN リファレンスを参照してください。GCC プリプロセッサには、既にフル パスが含まれています。ドキュメント__FILE__
を参照してください。