2

私のコードを参照してください

#include<stdarg.h>

#define DPRINTF(_fmt, ...) debugPrintf(_fmt,__VA_ARGS__)

void debugPrintf(const char *fmt, ...)
{
char buf[128];  
va_list ap;  

va_start(ap, fmt);
vsnprintf(buf, sizeof(buf), fmt, ap);
va_end(ap);
fprintf(stderr,"%s",buf);        
return;
}

main()
{
int a=10;  
DPRINTF("a is %d",a);
DPRINTF("WHY THIS STATEMENT GETS ERROR");

}

なぜこのコードをコンパイルできないのですか?コメントするとき

 //DPRINTF("WHY THIS STATEMENT GETS ERROR");

正しく動作します。

...(変数引数)を使用してデバッグを記述し、変数を渡したくないような条件も処理する方法はありますか?

4

2 に答える 2

3

試す

#define FOO(fmt, ...) printf(fmt, ##__VA_ARGS__)

最初の引数の後に引数がない場合は、ダブルハッシュがあります。

于 2011-07-28T11:32:31.883 に答える
3

使用するだけ

#define DPRINTF(...) debugPrintf(__VA_ARGS__)

可変個引数関数以外の可変個引数マクロは、固定引数を必要としません。

于 2011-07-28T11:37:58.357 に答える