サンプルプログラム macro.c
(19)関数形式マクロ
#defineには関数を呼び出すような感じで置換する(マクロ)機能があります。
#include <stdio.h>
// 関数形式マクロ Add
// 行末に\を記述することで複数行に渡るマクロ定義ができます
#define Add( x, y ) \
( x + y )
void main( void )
{
printf( "1 + 2 = %d\n", Add(1,2) );
}
実行結果は以下のようになります。
1 + 2 = 3
上のサンプルプログラムのように関数を呼び出すような感じでマクロが使えます。
関数と違ってマクロはプログラム中にコードが展開されますので呼び出しのオーバーヘッド(無駄)が無い代わりにメモリを(余計に)消費します。
ですので関数形式マクロでは複雑な処理はしない方が良いかと思います。