目录
什么是预处理
C语言里的预处理,简单来说就是在真正开始编译你的源代码之前,有个特殊的“预备队”先上场,帮你把原始代码整理得更规整、更适应编译器的要求,同时也让你编程时能更方便、更灵活。这个“预备队”就是预处理器,它干的活儿是在编译流程的最前端单独进行的,比检查语法、理解代码含义那些步骤还要早。
#define定义常量
什么是宏定义常量
在编程中我们经常会用到一些常量,比如圆周率的值,最大最小值,长度宽度等,这些变量伴随我们的整个程序,我们就可以用一个宏来替换,例如:
#define PI 3.1415926
#define MAX 100
#define MIN 0
#define ROW 10
#define COL 10
宏定义常量的好处
在编程实践中,我们时常会遇到一些常数,它们如同程序的脉络一般,贯穿于各个角落,对算法逻辑、数据结构乃至系统行为产生深远影响。然而,当需要调整这些常数时,问题便凸显出来:我们必须逐一排查并手动修改它们在源代码中每一次出现的位置,这无疑是一项既繁琐又易出错的任务,极大地降低了工作效率,且不利于代码维护。
此时,宏定义常量的优越性便显现无遗。借助宏定义,我们只需在一处为这些常数赋予新的名称和值,随后在整个程序中以宏名代替实际数值。一旦宏的值发生变更,预处理器便会以“魔法之手”般的力量,悄无声息地将所有引用宏之处更新为新的值。如此一来,改动一处,全局皆变,省却了在代码汪洋中寻觅与替换的辛劳,极大地提升了调整常数的效率,也确保了改动的一致性与准确性。
总结来说,宏定义常量犹如一把精巧的钥匙,解锁了高效管理贯穿程序全局常数的难题。它以一处定义、处处生效的方式,简化了常数修改的过程,避免了人工逐行排查的困扰,确保了代码的整洁与维护性,堪称提升编程效率与代码质量的得力助手。
#define定义宏
我们学过函数,但你知道宏也可以实现类似函数的功能吗?
例如,我们想要计算一个数的平方,除了用函数以外,我们还可以用宏来完成这个功能,例如:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define SQRT(x) ((x)*(x))
int main()
{
printf("%d", SQRT(5));
return 0;
}
像这样我们就可以实现一个数的平方操作,也就是将x等量替换成5
注意事项
需要注意的是,宏和函数不同,这个在下面我们也会继续讲到
宏仅仅只是简单的替换,他不会根据你想的意思去执行命令,比如如果你在定义宏的时候是这么定义的:
#define SQRT(x) x*x
而如果这时x的值为3+3,那么在宏替换的时候就会变成这样:
3+3*3+3
其结果是 15,这很显然不是我们想要的结果,注意宏替换只是简单的替换,所以我们在使用宏的时候一定要注意多加括号,否则可能会造成不必要的损失
带有副作用参数的宏
我们看看下面两个例子:

最低0.47元/天 解锁文章
1064

被折叠的 条评论
为什么被折叠?



