A function-like macro expands only when its name is followed by parentheses. Without them, macro retention leaves the identifier unchanged, allowing the same name to denote an ordinary function. section 16.1
Protecting a function name
With `#define string_literal(S) string_literal("" S "")`, a declaration written as `char const* string_literal(...)` would be expanded incorrectly. Writing `(string_literal)` prevents expansion because the macro name is not immediately followed by `()`. In `string_literal` used without parentheses, retention preserves the function designator; function decay can then convert it to a function pointer. section 16.1
