 <p>Placemarker tokens are defined in the preceding paragraph (6.10.3.2):</p> <blockquote> <p>If, in the replacement list of a function-like macro, a parameter is immediately preceded or followed by a <code>##</code> preprocessing token, the parameter is replaced by the corresponding argument’s preprocessing token sequence; however, if an argument consists of no preprocessing tokens, the parameter is replaced by a <em>placemarker</em> preprocessing token instead.<sup>145)</sup></p> </blockquote> <p>And the footnote:</p> <blockquote> <p>145) Placemarker preprocessing tokens do not appear in the syntax because they are temporary entities that exist only within translation phase 4.</p> </blockquote> <p>And the last line you quoted doesn't say "undefined behaviour", it says "the behavior is undefined". I'm not sure what kind of answer you're looking for here. It says so because the authors of the standard decided so.</p>