#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))