实现后缀用宏定义的值,宏嵌套和拼接求助?
本帖最后由 emwin 于 2021-7-31 17:31 编辑#include <stdio.h>
#define DMA_DMAIF_TCIF0 100
#define DMA_DMAIF_TEIF0 200
#define UART4_RXDMA_CH_NUM 0 /*"!!!!串口配置的DMA通道号!!!!"*/
#define UART4_RX_DMA_CH_TXIF(num) DMA_DMAIF_TCIF##num
#define UART4_RX_DMA_CH_TEIF(num) DMA_DMAIF_TEIF##num
int main()
{
printf("%d, %d", UART4_RX_DMA_CH_TXIF(0), UART4_RX_DMA_CH_TEIF(0));
return 0;
}我想简化切换DMA通道的代码修改,改UART4_RXDMA_CH_NUM。怎么让UART4_RX_DMA_CH_TXIF(UART4_RXDMA_CH_NUM)得到DMA_DMAIF_TCIF0?
已解决:
#include <stdio.h>
#define DMA_DMAIF_TCIF0 100
#define DMA_DMAIF_TEIF0 200
#define UART4_RXDMA_CH_NUM 0 /*"!!!!串口配置的DMA通道号!!!!"*/
#define UART4_RX_DMA_TCIF(x) PARAM_TC(x)
#define UART4_RX_DMA_TEIF(x) PARAM_TE(x)
#define PARAM_TC(num) DMA_DMAIF_TCIF##num
#define PARAM_TE(num) DMA_DMAIF_TEIF##num
int main()
{
printf("%d %d", UART4_RX_DMA_TCIF(UART4_RXDMA_CH_NUM), UART4_RX_DMA_TEIF(UART4_RXDMA_CH_NUM));
return 0;
}
这种玩法,CMSIS-Driver里面全是这种,楼主可以借鉴完善下。
页:
[1]