我在 Keil 中使用 USART,我看到了这个;
#define USART_DRV_NUM 6
#define USART_BAUDRATE 9600
#define _USART_Driver_(n) Driver_USART##n
#define USART_Driver_(n) _USART_Driver_(n)
extern ARM_DRIVER_USART USART_Driver_(USART_DRV_NUM);
#define ptrUSART (&USART_Driver_(USART_DRV_NUM))
事情是这样的;
#define _USART_Driver_(n) Driver_USART##n
我在互联网上找不到任何示例。有人知道这件事吗?
最佳答案
它的名字是 Token Pasting Operator 。例如,它生成一个标识符
#define _USART_Driver_(n) Driver_USART##n
int _USART_Driver_(_EXAMPLE);
翻译为
int Driver_USART_EXAMPLE;
请注意,n
不是变量。它在预处理阶段的实际编译之前被逐字替换。
关于c - C语言中的 '##'是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35279909/