前言
C语言中,要想解决某子问题,可以自定义一个函数来专门处理该问题,比如:我想比较两个数的大小,那么我可以地定义一个函数max来完成两个数求最大值功能。但是,C语言中我们也可以通过宏定义来定义一个求最值的函数MAX,然后通过使用带参宏来完成最大值的求解。那么问题来了,两种方式都可以定义一个求最值的函数,那他们有什么区别了?两者有啥优缺点呢?本文则针对以上问题进行说明和总结。
一、 带参宏 和 函数 概念引入?
#include <stdio.h>
#define MAX(a, b) ((a) > (b) ? (a) : (b))//宏定义最大值函数
int max(int x,int y)//自定义求最值函数
{
return x>y?x:y;
}
int main()
{
printf("宏定义中两数最大值为:%d\n",MAX(8,99));
printf("自定义函数中两数最大值为:%d\n",max(55,3));
return 0;
}
代码运行结果展示:
两个方法都可以达到求最值的目的,那么两者有何区别?有何优缺点?
二、带宏参 和 函数 的区别和优缺点:
|–| const修饰符| |
|–|–|
| | |
const修饰符 | 符号常量 | |
---|---|---|
执行阶段 | 编译、运行时起作用 | 预处理阶段 |
作用方式 | ①有对应的数据类型;②将变量转为常量时,会做语法检查,如果存在越界问题或超界情况,会给出警告 | 简单的字符替换 |
|是否能调试||
|初始化||