gcc下调试打印宏的连接问题
要完全禁用c-source中的调试输出, 我通常定义以下简单宏#1gcc下调试打印宏的连接问题,gcc,visual-c++,concatenation,c-preprocessor,Gcc,Visual C++,Concatenation,C Preprocessor,要完全禁用c-source中的调试输出, 我通常定义以下简单宏#1 #定义dprintf(args) 要启用调试输出,我可以选择定义宏#2 #定义dprintf(args)printk##args 源代码中的用法如下所示: dprintf(((“IRQ:%lu\n”,IRQ)) 如果我使用宏#2,预处理器应该创建以下行 printk(“IRQ:%lu\n”,IRQ) Windows Visual C++下,没有问题。 在NETBEANS IDE 6.8下使用gcc版本4.4.1(Ubuntu
#定义dprintf(args)
要启用调试输出,我可以选择定义宏#2
#定义dprintf(args)printk##args
源代码中的用法如下所示:
dprintf(((“IRQ:%lu\n”,IRQ))代码>
如果我使用宏#2,预处理器应该创建以下行
printk(“IRQ:%lu\n”,IRQ)代码>
Windows Visual C++下,没有问题。
在NETBEANS IDE 6.8下使用gcc版本4.4.1(Ubuntu 4.4.1-4ubuntu9),
我收到以下错误消息:
“printk”和“(”未提供有效的预处理令牌
我在Linux下尝试了以下方法
#定义dprintk(args…)printk(args)
这只适用于
dprintf(“IRQ:%lu\n”,IRQ);
Visual C++但不知道代码> ARGs…< /COD> < /P>
我必须在windows上编译源代码
以及Linux(386)平台
有人有主意吗?为什么不#定义dprintf(args)打印args
双括号可被添加以替换VisualC++中的变量宏:预处理器将处理宏调用,好像只有一个参数。
< p>令牌粘贴操作符<代码> > > <代码>只能用于连接<强>令牌< /St>,如编译器的名称,例如GCC,E的新版本。正如您现在所发现的,要比其他人更严格地执行此操作。不过,正如前面所说的,在这个特定示例中,您实际上不需要。