https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91973
--- Comment #4 from qinzhao at gcc dot gnu.org --- (In reply to jos...@codesourcery.com from comment #3) > Macro replacement for function-like macros is defined in C17 6.10.3. > Note in paragraph 10 the words "the function-like macro name followed by a > ( as the next preprocessing token". In your example foo ends up followed > by ) not ( as the next preprocessing token. could you please explain a little more of the above, for the following macro definition: #define foo(addr) \ boo (addr) foo is followed by ( but not ), right? do I miss anything here?