Avoiding Function Call Overhead
 
 
- In C, it is common to define short “functions” to avoid function calls #define square(a) (a * a)
- Problem: square(a+b) becomes   (a+b * a+b) = a + (b*a) + b
- The usual sol’n is to use lots of ()’s: #define square(a) ((a) * (a))
- Problem: square(a++) becomes       (a++ * a++) which is surely wrong, and no number of ()’s will ever fix it!