Скажем, у меня есть два файла, a.h
:
#if 1
#include "b.h"
и b.h
:
#endif
Оба препроцессора gcc и clang отклоняют a.h
:
$ cpp -ansi -pedantic a.h >/dev/null
In file included from a.h:2:0:
b.h:1:2: error: #endif without #if
#endif
^
a.h:1:0: error: unterminated #if
#if 1
^
Однако стандарт C (N1570 6.10.2.3) говорит:
Директива предварительной обработки формы
# include "q-char-sequence" new-line
вызывает замену этой директивы всем содержимым исходного файла, идентифицированного указанной последовательностью между разделителями
"
.
который, как представляется, позволяет построить выше.
Являются ли gcc и clang несовместимыми в отказе от моего кода?