我正在通过代码对某些寄存器进行了一些写操作。现在,他们将其作为通用函数,以便写入不同的寄存器必须通过相同的功能:
#define RGS(x) \
static inline void write_##x(u8 val) \
{ \
}
#define REGW(x) RGS(x)
write_wdc(val);
现在我想知道何时调用write_wdc,它是如何被这些宏替换的。
答案 0 :(得分:2)
这并没有显示实际使用的宏,为了使最后一行(调用)工作,还必须有类似的东西:
REGW(wdc)
代码中的某个地方,使用宏。以上内容将由预处理器替换为:
RGS(wdc)
反过来将替换为
static inline void write_wdc(u8 val) { }
我认为你的宏声明中也缺少函数的主体,我希望像x = val;
这样的东西能够实现写入。
这使用##
预处理程序运算符将单词“粘合”在一起。