我正在浏览一些代码,其中一些写了一些寄存器。现在,他们把它作为一个泛型函数,这样对不同寄存器的写入必须经过同一个函数:

   #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/

10-11 15:31