Ответ 1
Это означало бы, что если два включенных файла имеют первые 8 символов, то заголовок, который он фактически выбирает, - undefined.
Нет, я бы возразил против этого: глядя на точную формулировку, мы видим, что стандарт использует:
[..] Реализация может игнорировать [..]
Это "может", а не "должно". Если бы последний был использован, это действительно означало бы, что поведение было undefined (N1570 $4/2). Поскольку "may" используется как есть, без точного объявления, я считаю безопасным принять нормальный смысл слова (источник, акцент мой)
используется для выражения возможности или разрешения
Таким образом, реализации разрешено рассматривать только первые 8 символов, но это не обязательно.
Смешная вещь: я не могу найти точную документацию для "предела разграничения" "последовательности" в руководстве GCC, то есть (N1570 $4/8, акцент мой)...
Реализация должна сопровождаться документом, который определяет все реализацию определенных и специфичных для локали характеристик и всех расширений.
... что GCC может (с некоторой педантичной точки зрения) считаться несоответствующей реализацией. Практически значимая часть их руководства, как отметил @PaulGriffiths, вероятно (источник, пункт 4 в списке):
Значительные начальные символы в имени идентификатора или макроса.
Препроцессор обрабатывает все символы как значимые. Стандарт C требует только того, чтобы первые 63 были значительными.
Относительно комментария:
[..] Я действительно пытаюсь оценить, будет ли это укусить меня, пока я использую один из этих компиляторов на платформе Linux. [..]
Я действительно сомневаюсь, что это когда-нибудь (опять?) будет проблемой.