200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 带参宏和带参函数的比较(C语言)

带参宏和带参函数的比较(C语言)

时间:2020-12-14 06:57:37

相关推荐

带参宏和带参函数的比较(C语言)

例:分别通过宏定义和函数方式求a和b的乘积

#include<stdio.h>#define mult_macro(a,b) a*bint mult_fun(int a, int b){return a*b;}int main(){int a=11,b=6;printf("%d\n",mult_fun(a+b,a-b));printf("%d",mult_macro(a+b,a-b));}

分别使用不同的方式求值运行代码和时间如下:

函数方式:

带参宏方式:

可以看到两种方法的运行时间宏会快一些,而且结果也不同这是为什么呢。

因为函数传参会将参数优先计算出结果然后参与计算,而宏调用时进行替换,并不考虑优先级,所以宏替换后a*b就替换为了a+b*a-b改变了原有的优先级导致结果不同。

其次两者的生效位置也不同,宏会在编译时就进行展开从而影响编译的时间,而函数则是在程序运行时生效(分配内存、返回值、传参)影响程序的运行时间

并且因为宏定义的替换形式,在多次调用时会在编译阶段全部替换,在宏定义有一定代码量的情况下会导致程序的存储大小增大,而函数并不会出现重复代码。宏定义中并不存在调试(即无法对宏运行中出现的问题进行调试)和递归。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。