最近便利なマクロがあることを知ったのでメモ。
- __VA_ARGS__ 可変個引数をマクロで簡単に定義できる
- __LINE__ コードの行数
- __FILE__ ファイル名「ディレクトリ含む
- __FUNCTION__ 関数名
- __DATE__ コンパイルされた時の日付
- __TIME__ コンパイルされた時の時間
使い方(例) 一応動くけど、正しい書き方か 分からないです^^;
#include <stdio.h>
#define DEBUG 1
#if DEBUG
#define dbg(str,...) printf("%d@%s " str, __LINE__,__FUNCTION__,__VA_ARGS__);
#define dbg2() printf("%d@%s\n", __LINE__,__FUNCTION__);
#else
#define dbg(...)
#define dbg2()
#endif
int main()
{
printf("compiled => %s %s\n", __DATE__, __TIME__);
int i;
dbg2()
for(i = 0; i < 3; i++)
{
dbg("i=%d\n", i);
}
dbg2();
return 0;
}
実行結果
compiled => Nov 29 2010 01:17:08 29@main 33@main i=0 33@main i=1 33@main i=2 36@main