Macros are frequently used to make source code more readable. Macro definitions, regardless of whether they expand to a single or multiple statements (see PRE10-C. MultiWrap multi-statement macros should be enclosed in a do-while loop) should not conclude with a semicolon. If required, the semicolon should be included following the macro expansion. Inadvertently inserting a semicolon at the end of the macro definition can unexpectedly change the control flow of the program.
...