https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115488
Bug ID: 115488
Summary: __has_include with empty filename
Product: gcc
Version: 15.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: jakub at gcc dot gnu.org
Target Milestone: ---
#if __has_include("")
#endif
#if __has_include(<>)
#endif
#include ""
#include <>
gcc emits errors just about the last 2 lines, while clang diagnoses also the
__has_include.
C23 says in 6.10.1/6:
"Such a directive shall satisfy the syntactic requirements of a #include
directive."
and I believe it is the syntax requirement of #include that the headers are
non-empty:
# include < h-char-sequence > new-line
# include " q-char-sequence " new-line
h-char-sequence:
h-char
h-char-sequence h-char
q-char-sequence:
q-char
q-char-sequence q-char
and so I think <> nor "" aren't valid.