友情提示:本文共有 1277 个字,阅读大概需要 3 分钟。
说到宏定义,我们应该先了解什么是预处理指令,相信大家并不会陌生,之前我们编程时,程序的开头#include指令,#define指令都是预处理指令,它能使我们的编译更加的高效,便捷,因此C语言中是允许用户自己加入一些特定的预处理指令的。
C语言提供的预处理功能常用的主要有;宏定义,文件包含,条件编译。今天,小编我就带着大家去学习宏定义,宏定义分为两种一种是”不带参数“的宏定义,另一种就是“带参数的宏定义“。
一,不带参数的宏定义
不带参数的宏定义是比较简单的,就是用一个指定的标识符来代表一个字符串。它的一般形式为;
#define 标识符 字符串
例如
#define E 2.718281828459
它的作用是在本程序文件中用指定的标识符E来代替2.718281828459这个字符串。在进行预处理时,将程序中凡是在该指令以后出现的所有的E都用2.718281828459代替。这种方法使用户能以一个简单的名字代替一个长的字符串,因此把这个标识符(名字)称为"宏名”
在预处理时将宏名替换成字符串的过程称为"宏展开“。#define就是宏定义指令。
二,带参数的宏定义
带参数的宏定义不是仅仅进行简单的字符串替换,还要进行参数替换。其定义的一般形式为;
#define 标识符(宏名)(参数表) 字符串
字符串中包含在括号中所指定的参数。
例;
#define S(a,b) a*b
area=S(3. 2)
以上意思就是矩形的面积为长乘宽,程序中使用了宏定义替代了原来的S=a*b ,方便了当出现大量面积计算时的复杂。
对带参数的宏定义是这样进行展开置换的在程序中如果有带实参的宏,如上,则按#define指令行中指定的字符串从左到右进行置换。如果字符串中包含宏中的形参(如a,b),则将程序语句中相应的实参(可以是常量、变量或表达式)代替形参。如果宏定义中的字符串中的字符不是参数字符,则保留。这样就形成了置换的字符串。
接下来小编我,分别用不带参数的宏定义,和带参数的宏定义为大家编译一个计算圆面积的程序。
首先我们先用不带参数的宏定义进行编译;程序中,只需要输入圆的半径,就可以计算出圆形的面积。
#include
#define Pi 3.1415926
int main()
{double r,s;
printf("请输入圆的半径n");
scanf("%lf",&r);
s=Pi*r*r;
printf("圆的面积为: %lf",r);
return 0;
}
以上是不带参数的宏定义的程序
#include
#define Pi 3.1419526
#define S(r) Pi*r*r
int main()
{
double r,s;
printf("请输入圆的半径n");
scanf("%lf",&r);
s=S(r);
printf("圆的面积为: %lf",r);
return 0;
}
以上就是带参数的宏定义。
很显然带参数的宏定义在计算的时候,不必做更多的计算声明,就可以直接的套用,它更加适合于那些需要大量使用该公式的程序中,相反如果程序中仅仅使用一次,该公式的话,不带参数的宏定义更加高效。
本文如果对你有帮助,请点赞收藏《C语言中宏定义的用法》,同时在此感谢原作者。