Calling a vs. Calling a Function Macro
Can always create a newly created object
Limited to fixed type arguments
May be passed as an argument to other functions
Function call overhead (for stack handling)
May be a statement(require automatic variables)
May require an argument to carry a newly created object
Operates (usually) on arguments of varying types
Cannot be passed as an argument