【发布时间】:2010-06-23 12:54:19
【问题描述】:
要完全禁用 c-source 中的调试输出, 我通常定义以下 SIMPLE 宏#1
#define dprintf(args)
为了启用调试输出,我定义了宏#2
#define dprintf(args) printk##args
源码中的用法如下:
dprintf(("Irqs:%lu\n",irqs));
如果我使用宏#2,预处理器应该创建以下行
printk("Irqs:%lu\n",irqs);
在Windows Visual c++下,没有问题。
在 NETBEANS IDE 6.8 下使用 gcc 版本 4.4.1 (Ubuntu 4.4.1-4ubuntu9), 我收到以下错误消息:
"printk" and "(" does not give a valid preprocessing token
我在Linux下尝试了以下
#define dprintk(args...) printk(args)
这仅适用于
dprintf("Irqs:%lu\n",irqs);
Visual C++ 然而不知道args...
我必须在 windows 上编译源代码 和 Linux(386) 平台。
有人有想法吗?
【问题讨论】:
标签: gcc visual-c++ concatenation c-preprocessor