我正在浏览一些代码,其中一些写了一些寄存器。现在,他们把它作为一个泛型函数,这样对不同寄存器的写入必须经过同一个函数:
#define RGS(x) \
static inline void write_##x(u8 val) \
{ \
}
#define REGW(x) RGS(x)
write_wdc(val);
现在我想知道何时调用write-wdc,它是如何被这些宏替换的。
最佳答案
这并没有显示实际使用的宏,为了使最后一行(调用)工作,还必须有如下内容:
REGW(wdc)
在代码的某个地方,使用宏。上述内容将由预处理器替换为:
RGS(wdc)
接下来将被替换为
static inline void write_wdc(u8 val) { }
我假设您的宏声明中也缺少函数的主体,我希望其中的
x = val;
之类的内容能够真正实现写操作。这使用
##
预处理器操作符将单词“粘合”在一起。关于c - 该通用功能如何使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18438653/