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!