c - DbgPrint 输出与宏到 DbgPrint 的输出不同

标签 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

最佳答案

您正在尝试使用预处理器来创建预处理器定义。我自己从未尝试过,但这似乎是一个坏主意,可能行不通。相反,尝试类似的方法:

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

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

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

关于c - DbgPrint 输出与宏到 DbgPrint 的输出不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21656573/

相关文章:

c - C代码的不合逻辑输出

更改颜色 TTF 文本 SDL C

c - 在文件范围内可变地修改了 'stack'

windows - 无法在 WinDBG 中运行扩展命令

c++ - WDK 10 - Rpcrt4.dll - 系统错误 2

objective-c - Objective C float 乘法产生意想不到的结果

python - 通过 ctypes 从 Python 调用 C 代码,使用 python 对象列表

c - 在不修改 Windows header 的情况下无法使用 VC2015 构建 WDK 10 示例

c - 使用 win32 和 C 从 WDK 驱动程序中的 UNICODE_STRING 中提取路径名组件

Windows 虚拟鼠标驱动程序