Or you can get the compiler to show you what the pre-processor has done.
Code:
$ cat foo.c
#include <stdio.h>
#define min(a,b) ((a) > (b) ? (b) : (a))
#define inc(a) a++
#define mult(a,b) (a * b)
int main(void) {
int x = 0;
int y = 0;
printf("min(%d,inc(%d))",x,y);
printf("=%d\n",min(x,inc(y)));
printf("min(mult(%d,%d+2),11)",x,y);
printf("=%d\n",min(mult(x,y+2),11));
return 0;
}
$ gcc -E foo.c | tail
int main(void) {
int x = 0;
int y = 0;
printf("min(%d,inc(%d))",x,y);
printf("=%d\n",((x) > (y++) ? (y++) : (x)));
printf("min(mult(%d,%d+2),11)",x,y);
printf("=%d\n",(((x * y+2)) > (11) ? (11) : ((x * y+2))));
return 0;
}