以下は、半径が引数として渡されたときに円の面積を与える 2 つのプログラムです。しかし、最初のプログラムmacro.cではジョブにマクロを使用していますが、2 番目のプログラム 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;
}