返回信息流是关于C语言的宏替换问题,我在做单片机程序时候碰到的
举个例子说吧
假如有0~7个通道,每个通道都是由几个寄存器组成。这些寄存器的名称类似,只是最后的数字分别从0到7
假设这些寄存器为A0~A7,B0~B7
#define CHANNEL 4
那么,我如何定义一个宏,才可以是这个宏被替换成A4的形式呢?
我自己找了一些关于宏定义的,我想可能是##
但是
#define P_A(x) A##x
调用P_A(CHANNEL)被替换成ACHANNEL而不是我想要的A4的形式。
敬请指教
这是一条镜像帖。来源:北邮人论坛 / cpp / #32815同步于 2009/12/6
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
C语言的宏替换问题
lanphon
2009/12/6镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 lanphon 的大作中提到: 】
: 搞定了,二次宏替换
: #define _P_A(x) A##x
: #define P_A(x) _P_A(x)
: ...................
学习一下~~
呵呵,三次宏替换更爽
#define __P_A(x) A##x
#define _P_A(x) __P_A(x)
#define P_A _P_A(CHANNEL)
这样调用的时候直接写P_A就可以了
【 在 lanphon 的大作中提到: 】
: 呵呵,三次宏替换更爽
: #define __P_A(x) A##x
: #define _P_A(x) __P_A(x)
: ...................
写P_A传不了参数啊孩子[em16]
【 在 jmpesp 的大作中提到: 】
: 写P_A传不了参数啊孩子[em16]
已经修改了,最后一个应该是#define P_A P_A(CHANNEL)
在这里把参数传递过去了(如果这个也可以称作参数的话)
单片机编程,初始化就是和一堆名字各种诡异的寄存器打交道,想省点儿心思也这么麻烦,sigh~