其他分享
首页 > 其他分享> > C语言 第十九章 预处理指令1-宏定义

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