いや、漏れはそんなに大した事言ってない。
C++ なら関数でも SWAP(a, b) って書き方できるでしょ。
C だと SWAP(&a, &b) って書かなきゃいけない。
それだけ。

ちなみに、最近のコンパイラでは register というキーワードは単に無視してるみたい。
あと、inline 指定しても内容が長かったり呼び出しが多かったり関数ポインタを得てる
場合はインライン展開されない。
頭のいいコンパイラは、inline 指定してなくてもインライン展開する事もある。
というか、C では inline はキーワードじゃないけど。