在宏中定义函数(在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))))
有什么不对吗? 谢谢
答
宏参数有点像普通函数参数。在左边你只需要一个在右边使用的名字
#define WRITEL(ADDR, REG) (writel(ADDR, nic->regs + (REG)))
你有一个特殊的理由来做它作为一个宏,而不是正常的功能与所有的好处(类型检查.....等等)? –