热度 18
2013-5-16 23:22
1068 次阅读|
2 个评论
C语言提供了很多的预处理命令,宏命令就是其中的一项,在嵌入式编程中巧用宏命令对我们程序编写具有很大的帮助! 在此贴出之前让我很纠结的一个宏技巧的使用: #ifndef _MARCO_H #define _MARCO_H 1 #define MACRO1(x) _MACRO1(x) #define MACRO2(x) _MACRO2(x) #define _MACRO1(a,b) a #define _MACRO2(a,b) b #define CONNECTEXTEND(a,b,c) a ## b ## c #define CONNECT(a,b,c) CONNECTEXTEND(a,b,c) #define PIN_CLR(PIN) CONNECT( _LAT,MACRO1(LED),MACRO2(LED) )=0 #endif 这个简单的宏使用是为了能移植到不同的单片机I/O口,例如使用这个宏时只需在在定义#define LED A,1就可以到A1口进行很方便的操作,当初看到这个例子时,一看很好明白,但最近自己模仿时总是编译出错,原因在于没有一个将宏进行转化的过程,也就是#define MACRO1(x) _MACRO1(x) ,如果没有这句对LED进行转化,那么宏就会将A,1当作a,进行使用,这也正是宏参数使用过程中出现的副作用!