デバッグ用マクロ

最近便利なマクロがあることを知ったのでメモ。

  1. __VA_ARGS__ 可変個引数をマクロで簡単に定義できる
  2. __LINE__ コードの行数
  3. __FILE__ ファイル名「ディレクトリ含む
  4. __FUNCTION__ 関数名
  5. __DATE__ コンパイルされた時の日付
  6. __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

投稿者:

コメントを残す

メールアドレスが公開されることはありません。