Code
#include <stdio.h>
#define max(a,b) ((a>b)?a:b)
int main()
{
int i=2,j=3;
printf("i=%d, j=%d\n",i,j);
if (max(i++,j++)==i)
{
printf("max(i++,j++)=%d\n",i);
}
else
{
printf("max(i++,j++)=%d\n",j);
}
return 0;
}
Выдаст:
i=2, j=3
max(i++,j++)=5
Весело, правда?) И это не единственная причина, почему так, как ты предложил, не делают.
Если хочешь, чтобы вместо функции у тебя просто подставлялось значение, просто объявляй функцию с префиксом "inline" или "__forceinline"