#include // This was our basic example #define SUM(x,y) ( (x) + (y) ) // Let us define a SQR macro. // Remember what happened when we forgot the brackets!!! #define SQR(x) ( (x) * (x) ) #define SQR_BAD(x) ( x * x ) // Function equivalent to above macro: int sqr(int a) { return a*a; } // Very useful macro! #define PRINT(message) printf("%s:%d %s\n",__FILE__,__LINE__,message); int main() { int a = 3; int b = 4; int sum = SUM(a,b); PRINT("got here"); int square = SQR(a); printf("a: %d, b: %d, SUM: %d\n",a,b,sum); printf("a: %d, SQR: %d\n",a,square); int square2 = SQR(a+2); int square2bad = SQR_BAD(a+2); printf("a+2: %d, SQR: %d SQR_BAD: %d\n",a+2,square2,square2bad); PRINT("still got here"); int square3 = SQR(a++); printf("a: %d, SQR: %d\n",a,square3); int square4 = SQR(++a); printf("a: %d, SQR: %d\n",a,square4); return 0; }