#define SQUARE(X) X*X
inline square(double x) {return x*x;}
Using macros to perform function-like services. This works not by passinig arguments but through text substitution, with the X action as a symbolic label for the "argument"
SQUARE (4.5+7.5) //4.5+7.5*4.5+7.5
#define SQUARE (X) (X)*(X)
SQUARE (4.5+7.5) //(4.5+7.5)*(4.5+7.5)
SQUARE (n++) //(n++)*(n++), n is incremented twice