在宏中定义函数(在C中)

问题描述:

我需要#定义一个宏作为函数。例如:在宏中定义函数(在C中)

#define REGISTER 0x80000000 
... 
writel(addr, nic->regs + REGISTER); // arguments are address and register 

我将它定义这样的:

#define WRITEL(addr, nic->reg + reg) ((writel(addr, nic->regs + (reg)))) 

有什么不对吗? 谢谢

+0

你有一个特殊的理由来做它作为一个宏,而不是正常的功能与所有的好处(类型检查.....等等)? –

宏参数有点像普通函数参数。在左边你只需要一个在右边使用的名字

#define WRITEL(ADDR, REG) (writel(ADDR, nic->regs + (REG))) 
+0

谢谢!从未做过这些事情。我认为我明白了原则。我非常感谢你的帮助 –

+0

但是有必要用()来覆盖函数吗? –

+0

@GeorgeZ。不是这样。 – tilz0R