先に本ブログでご紹介したマクロは、特定の文字列を別の文字列に置き換えるものであった。
今回は、「関数形式マクロ」をご紹介しよう。
次のように使用する。
#define MAX(x,y) (x > y ? x : y)
このように関数マクロを書いておくと、プログラムコードの中にある
MAX(x,y)
という記述が、
(x > y ? x : y)
に置き換えられる。
それでは、関数形式マクロを使用したプログラムをご紹介しよう。
なお、本プログラムは、Windows 11 Home(23H2)上で、
Visual Studio Code(1.91.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。
//関数形式マクロを使用したプログラム
#include <stdio.h>
#define MAX(x,y) (x > y ? x : y)
int main(void)
{
int a = 7;
int b = 10;
printf("%d\n",MAX(a,b));
double c = 5.6;
double d = 1.1;
printf("%.1f\n",MAX(c,d));
return 0;
}
実行結果
10
5.6
関数形式マクロを用いると、短いプログラムコードにできるという利点がある。
(参考)「C言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社
コメント