Edited at

Debug 関数の作り方と使い方

More than 5 years have passed since last update.

C 言語でデバッグ用の関数の定義と使い方。

定義から。


snippet

#include <stdio.h>

#include <stdarg.h>

#ifdef DEBUG
#define DEBUG_PRINTF(arg) debug_printf arg
#else
#define DEBUG_PRINTF(arg)
#endif

void debug_printf(char *, );

void debug_printf(char *fmt, )
{
va_list ap;
va_start(ap, fmt);

vfprintf(stderr, fmt, ap);

va_end(ap);
}


こうしておくと後はDEBUG_PRINTF(("debug: hogehoge…%s\n", s)) と書いて使える。

でも C99 からマクロが可変長の引数をとることができるらしいので


snippetv2

#ifdef DEBUG

#define DEBUG_PRINTF(fmt, …) debug_printf(fmt, __VA_ARGS__)
#else
#define DEBUG_PRINTF(fmt, …)
#endif

という書き方ができる為こっちの方が自然な書き方ができる。