被定义为“宏”的标识符称为“宏名”,在编译预处理时,对程序中所有出现的“宏名”,都用
宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。
在字符串中出现的宏名不会被替换。
宏可以嵌套定义。比如:
1 #define R 4
2 #define PI 3.14
3 #define AREA
可以使用 #undef 来取消#define
习惯上宏名用大写字母表示,以便于与变量区别。但也允许小写。
定义形式:
1 #define 标识符 字符串
有参宏:
对带参数的宏,在调用中,不仅要展开,而且要用实参去代替形参。
形式:
#define 宏名(形参表) 字符串
复制代码
/*有参宏 #define SUM (a) a+a
SUM(3) 不仅要 a+a替换,而且还要把实参3带入到字符串中
*/
#include<stdio.h>
#define SUM(a) a+a
int main(int argc,const char * argv[]){
int result = SUM(3);
printf("%d\n",result);
return 0;
}
复制代码
运算结果:6 |
|