DbgPrint输出与Macro到DbgPrint的输出不同

时间:2014-02-09 07:39:34

标签: c wdk

我为DbgPrint定义了一个宏,用于在_DEBUG定义时打印消息

#define MYDBGPRINT(X) #ifdef _DEBUG \
    DbgPrint(X) \
#endif

但输出与DbgPrint不同,例如

ULONG id=0;
MYDBGPRINT("the value of the id : %u ",id)  //outputs garbage
DbgPrint("the value of the id : %u ",id)  //outputs the correct value of id

1 个答案:

答案 0 :(得分:0)

您正在尝试使用预处理器来创建预处理器定义。我自己从来没有尝试过,但这似乎是个坏主意,可能无法奏效。而是尝试类似的事情:

#ifdef _DEBUG
#define MYDBGPRINT(X) DbgPrint(X)
#else
#define MYDBGPRINT(X)
#endif

或者在宏的参数数量可变的情况下:

#ifdef DEBUG
#define MYDBGPRINT(...) DbgPrint(__VA_ARGS__)
#else
#define MYDBGPRINT(...)
#endif