看了kdPrint 可变参数宏定义,
#if DBG
#define KdPrint(_x_) DbgPrint _x_
#else
#define KdPrint(_x_)
为何支持可变参数宏,原来使用时必须用2个刮号,如
KdPrint(("information...%s",str));
下面我也学习写一个,该宏多一个参数,决定是否输出该信息。
#include "stdafx.h"
#include <stdio.h>
#define MYPRINTF(_x_,bOutput) (bOutput?printf _x_:0)
int main(int argc, char* argv[])
{
MYPRINTF(("Hello World_debug! %d,%s/n",7,"test"),true);
MYPRINTF(("Hello World!/n"),false);
return 0;
}
内核的可如下定义
#define MyKdPrint(_x_,bOutput) (bOutput?DbgPrint _x_:0)
这样由bOutput来控制是否输出信息。