小規模な関数で,関数呼び出しのオーバーヘッドを気にする場合には, 関数をマクロとして記述することがある.標準入出力ライブラリの getchar()やputchar()などもマクロだ. マクロを使う場合,例えば次のような記述になる.
#define transpose(a) { ¥
int z; z = (a).x; ¥
(a).x = (a).y; ¥
(a).y = z; ¥
}
しかし,マクロを使う 場合,次のような問題がある.
inline void transpose(vector2D& a)
{
int z;
z = a.x; a.x = a.y; a.y = z;
}
複数のファイルで同じインライン関数を使う場合には,
マクロと同じように,ヘッダファイルに関数を記述する.また,
前述のように,構造体定義の中でメンバ関数の本体を定義すると,
そのメンバ関数はインライン展開の対象となる.