C语言中的宏与函数
在本节中,我们将看到C中的宏和函数之间的区别是什么。宏是经过预处理的,因此这意味着所有宏在编译时都将进行预处理。这些函数不是经过预处理的,而是经过编译的。
在宏中,没有进行类型检查,因此对于不同类型的输入可能会出现一些问题。对于功能,则不这样做。同样对于宏,如果没有正确维护输入,则可能会生成一些无效的结果。请检查以下程序以获取有关该问题的想法。
示例
#include <stdio.h>
#define SQUARE(x) x * x
int sqr(int x) {
return x*x;
}
main() {
printf("Use of sqr(). The value of sqr(3+2): %d\n", sqr(3+2));
printf("Use of SQUARE(). The value of SQUARE(3+2): %d", SQUARE(3+2));
}输出结果
Use of sqr(). The value of sqr(3+2): 25 Use of SQUARE(). The value of SQUARE(3+2): 11
我们希望函数和宏都执行相同的任务,但是在这里我们可以看到输出不相同。主要原因是当我们将3+2作为函数参数传递时,它将转换为5,然后计算5*5=25。对于宏,它正在执行3+2*3+2=3+6+2=11。
因此不建议将宏用于以下问题-
没有类型检查
默认调试,因为它们可以轻松替换
宏没有命名空间。因此,如果宏在一个部分中定义,则可以在另一部分中使用它。
宏会增加代码长度,因为在预处理时会在代码之前添加宏。
宏不检查任何编译时错误。
热门推荐
10 早日回国祝福语简短英语
11 潮汕生日谚语祝福语简短
12 祝福语签名简短大全女生
13 送个姐妹生日祝福语简短
14 宝子生日祝福语简短
15 婶婶生日贺词简短祝福语
16 打牌翻盘祝福语简短
17 考生大学后祝福语简短
18 生女儿的祝福语简短