c - C语言中的 '##'是什么?

标签 c embedded keil

我在 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/

相关文章:

C make 文件 -Wno-unused-parameter 标志

c - STM32F4 不压入/弹出浮点寄存器

eclipse - 在 Eclipse IDE 中使用 GCC 编译器编译 RTX 内核文件

c - 如何将原始数据转换为来自 LSM303DLHC 传感器的有用温度

c - 在编译时用单调序列初始化全局整数数组?

embedded - 如何演示嵌入式系统的示例?

arm - 如何为多个组合的二进制文件设置构建

c - 指向结构体的指针

c - 单线程C逐行打印文件

c - MPI_Bcast : Efficiency advantages?