以下是两个程序,它们在将半径作为参数传递时给出圆的面积。但是在第一个程序macro.c中,我使用宏来完成这项工作,而在第二个程序function.c中,我正在使用一个函数来完成这项工作。
我熟悉函数的使用,以及它所需要的细微差别。但是接受参数的宏呢?我们什么时候应该更喜欢它们而不是函数?我们什么时候应该避免它们?哪一个提供更好的性能?我知道如果宏在程序中多次使用,宏方法会导致代码庞大,而对于函数的情况,同一个函数会被多次调用。但除了这个微不足道的差异之外,我们还需要注意哪些其他问题?
//macro.c
#include<stdio.h>
#define AREA(x) (3.14*x*x)
int main(void)
{
float r1=6.25,r2=2.5,a;
a=AREA(r1);
printf("\nArea of circle=%f",a);
a=AREA(r2);
printf("\nArea of circle=%f",a);
}
//function.c
#include<stdio.h>
float area(float);
int main(void)
{
float r1=6.25,r2=2.5;
printf("\nArea of circle=%f",area(r1));
printf("\nArea of circle=%f",area(r2));
}
float area(float radius)
{
return 3.14*radius*radius;
}