假设您有许多标识符,例如 UARTxREG(其中 x 是一个数字)。
有没有办法编写宏,例如:
#define CHANNEL_ONE 1
#define UART_REG(channel)
/* Later */
UART_REG(CHANNEL_ONE) = 1;
这样这将扩展到:
UART1REG
我可以这样做是将文字数字(1、2、3 等)传递给宏,但是当我尝试传入宏时,我遇到了宏无法正确扩展的问题。
我目前有:
#define STRINGIFY(x) #x
#define UART_REG(channel) STRINGIFY(UART##channel##REG)
/* Later */
UART_REG(UART_ONE) = regVal;
然而这并没有扩大channel
。