Cで知っているように、関数評価の実際のパラメーターの受け渡しは、右端から始まり、左に向けられます。パラメータ付きのマクロ定義の場合はどうなりますか?意味を明確にするためにコードを作成しましたが、出力が混乱しました...これがコードです。
#define parsing(a,b) a*b
int parsefun(int a, int b)
{
return a*b;
}
int main()
{
int i=10;
printf("%d\n",parsing((i++),i));
i=10;
printf("%d\n",parsing(i,(i++)));
i=10;
printf("%d\n",parsefun((i++),i));
i=10;
printf("%d\n",parsefun(i,(i++)));
system("PAUSE");
return 0;
}
このコードは、100 100100110を出力します
マクロの出力が関数と同じであることを望みました。しかし、ここで重要なポイントはどこにありますか?