関数形式マクロ

今日、C言語で、関数形式マクロを使用してプログラムを組んでいたんですが、
どうも分からない点が。

例えば、hogeという関数式マクロを定義したとして、

hoge(i - 1,j - 1);

と書くと、なぜかうまく作動しません。


でも、

a = i - 1;
b = j - 1;
hoge(a,b);

とかくと、正常に結果が返ってきます。
なんでだろう…。
どなたか、教えてはてなダイアリー