Issue 1115: Directives partially contained in multiline macro invocations

Authors: Jay Ghiron
Date: 2026-09-28
Submitted against: C23
Status: Open

See also C++ CWG 3224:

#define FOO(...)
FOO(
#if )

C++ is changing its wording to clarify that this is invalid, should the wording in C be changed as well to clarify that this is invalid?

Suggested correction

Modify C23 6.10.5.1 paragraph 11:

If there are sequences of preprocessing tokensis whitespace containing at least one new-line character immediately followed by a # preprocessing token within the list of arguments that would otherwise act as preprocessing directives, the behavior is undefined.

(footnote) Despite the name, a non-directive is a preprocessing directive.