等というのをプログラム中にちりばめてデバッグをしている人がたくさんいます。
printf("This process is SUCCESS!\n");
上記のようなプログラムがあったとします。
main()
{
int re;
re = function1();
if( re == -1 ){
printf("Error!\n");
}
re = function2();
if( re == -1 ){
printf("Error!\n");
}
return re;
}
テストプログラム:test.cもちろんソースファイル名を変更してコンパイルし直せば、filenameの部分は別の名前になります。
#include <stdio.h> main()
{
printf("filename = %s , line = %d\n",__FILE__,__LINE__ );printf("filename = %s , line = %d\n",__FILE__,__LINE__ );
return 0;
}実行結果
filename = test.c , line = 5
filename = test.c , line = 7
おそらく意図した結果が得られない関数こうしてしまうと、__FILE__と__LINE__は上記の関数が記述されている位置を指してしまいます。
void printLog( char *msg )
{
printf("%s,%d:%s\n",__FILE__,__LINE__,msg);
}
正しい使い方
#define printLOG( msg ) printf("%s,%d:%s\n",__FILE__,__LINE__,msg)