C语言 第十九章 预处理指令1-宏定义
作者:互联网
//一,不带参数的宏定义
1,一般形式
#define 宏名 字符串
eg:#define ABC 10
或者#definr ABC
2,作用
写个程序根据圆的半径计算周长
#include <stdio.h>
#define PI 3.14
float girth(float radius){
return 2 * PI * radius;
}
int main()
{
float g=girth(2);
printf("周长为:%f",g);
return 0;
}
3,使用注意
1,宏名大写
2,用双引号扩起来的字符串内的字符,
不进行宏的替换操作。
#define R 10
int main()
{
char *s="Radio";
return 0
}
3,#define I 100
int main()
{
int i[3]=I;
return 0;
}
4,#undef命令终止宏定义作用域
#define PI 3.14
/*
,
,
,
,
*/
#undef PI
5,定义一个宏时可以引用已经定义的宏名
#define R 3.0
#define PI 3.14
#define L 2*PI*R
#define S PI*R*R
//二,带参数的宏定义
1,一般形式
#define 宏名(参数列表) 字符串
2,作用
//在编译预处理时,
//将源程序中所有宏名替换成字符串,
//并且将 字符串中的参数 用 宏名右边参数列表 中的参数替换
#include <stdio.h>
#define average(a,b) (a+b)/2
int main()
{
int a = average(10,4)
printf("平均值:%d",a);
return 0;
}
3,使用注意
1,宏名和参数列表之间不能有空格,
否则空格后面的所有字符串都作为替换的字符串。
#define average(a,b) (a+b)/2
int main()
{
int a=average(10,4);
return 0;
}
2,在定义宏时,一般用一个小括号括住字符串的参数。
#include <stdio.h>
#define D(a) 2*(a)//字符参数括起来
int main()
{
int b=D(3+4);
printf("%d",b);
return 0;
}
3,计算结果最好也括起来
#include <stdio.h>
#define Pow(a) ((a)*(a))//字符串括起来
int main(int argc,const char *average[])
{
int b = Pow(10)/Pow(2);
printf(%d,b)
}
5,与函数的区别
1> 宏定义不涉及存储空间的分配、参数类型匹配、参数传递、返回值问题
2> 函数调用在程序运行时执行,
而宏替换只在编译预处理阶段进行。
所以带参数的宏比函数具有更高的执行效率
标签:宏名,main,return,int,C语言,第十九章,PI,预处理,define 来源: https://blog.csdn.net/qq_43181253/article/details/100918162