Use of preprocessor macros is full of pitfalls.In fact, its user manual includes a section called “Macro Pitfalls”.One of these pitfalls revolves around operator precedence.Operator precedence problems happen when the expectations about pass-by-value, the default for C functions, are applied to function-like macros.Function-like macros are pass-by-name; the arguments are textually substituted in the macro body.This is especially confusing because both C and preprocessor functions have the...