在文章 <SouthSide-2003990057220001@bns.vip.best.com> 中,
SouthSide@kagi.com (Bob Bradley) 写道
> 是否可以创建一个带有可变数量参数的宏?我
> 想创建一个调试宏,它接受一个可变数量的
> 参数来调用一个类似 printf 的例程,但当预处理器标志关闭时,
> 我希望它能完全消除函数调用。例如
>
> #if( DEBUG )
> #define DebugMacro( ... ) printf( ... )
> #else
> #define DebugMacro( ... )
> #endif
#if( DEBUG ) #define DebugMacro(Fmt_and_Args) printf(Fmt_and_Args) #define Arg(X) , (X) #else #define DebugMacro(Fmt_and_Args) #define Arg(X) #endif
用法
DebugMacro("Index %d, value %f"Arg(i)Arg(value));这允许您插入“隐藏”参数,例如
#if( DEBUG ) #define DebugMacro(Fmt_and_Args) fprintf(stderr,Fmt_and_Args)甚至,
#if( DEBUG ) #define DebugMacro(Fmt_and_Args) dbgprintf(__FILE__,__LINE__,Fmt_and_Args)Tristan Styles #1485
失败不是一个选项
这是标准操作程序