引数つきマクロ

C

#defineを使うと、引数をもち、関数のように動作するマクロを定義することができます。

#define HIKU(x, y) ((x) - (y))

上記の書き方は有効範囲は1行です。
複数行の場合は次のように定義します。

#define hiku2(a, b, c) ((a) * (b) * (c) )\
+ a+b+c)

実際に動かしてみます

#include <stdio.h>

#define HIKU(x, y) ((x) - (y))

int main(void)
{
    int i;
    
    printf("マクロ!%d\n", HIKU(10, 8));
    
    return 0;
}

//結果は「マクロ!2」と表示されます

引数つきマクロは、実行する処理全体とその中の引数はカッコでくくります。

//正しい例
#define HIKU(x, y) ((x) - (y))

//間違った例
#define HIKU(x, y) (x - y)

マクロ名と()の間にスペースを入れてしまうと、区切りが正しく認識されません。

//正しい例
#define HIKU(x, y) ((x) - (y))

//間違った例
#define HIKU (x, y) ((x) - (y))

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です