前一篇
在C,C++代码重复工作用宏表示。举例。我用Msp430编程写的宏。
宏可以理解为文本替换。它的好处在于可以灵活地替换变量,举个例子。
#define SETOUT(IONAME,IONUMBER) \
P##IONAME##DIR|=BIT##IONUMBER;
这个解释##,##之间就是变量文本链接 具体SETOUT(1,3) 展开宏就是IONAME=1,
IONUMBER=3
P##IONAME##DIR|=BIT##IONUMBER;
相当于 “P”+IONAME+“DIR|=BIT”+IONUMBER+";"
结果是P1DIR|=BIT3
这样写的好处可以自己体会,至少每次置位不用费脑计算,也不用特意写一个函数,几个Msp430系列底层很实用的宏,其它单片机可以依据这个思路修改。
#define DIM(a,b) \
int a,b;
#define SETOUT(IONAME,IONUMBER) \
P##IONAME##DIR|=BIT##IONUMBER;
#define SETB(IONAME,IONUMBER) \
P##IONAME##OUT|=BIT##IONUMBER;
#define SETIN(IONAME,IONUMBER) \
P##IONAME##DIR&=~BIT##IONUMBER;
#define CLRB(IONAME,IONUMBER) \
P##IONAME##OUT&=~BIT##IONUMBER;
#define SET_XOR(IONAME,IONUMBER) \
P##IONAME##OUT ^= (1<<IONUMBER);
#define SETONEBITH(NAME,NUMER)\
NAME|=(128>>NUMER)
#define SETONEBITL(NAME,NUMER)\
NAME &=~(128>>NUMER)
#define CHECK_IO(IONAME,IONUMBER) \
(P##IONAME##IN & (1<<IONUMBER))
#define CHECK_IOOUT(IONAME,IONUMBER) \
(P##IONAME##OUT & (1<<IONUMBER))
在python里使用exec可以达到宏的效果,上一个例子。设想一下,我们放置两个按钮可以butto1.SetPo(); butto2.SetPo()。如果多个,多个实例化,就会显得很臃肿。