Реализация может игнорировать различия в алфавитном регистре и ограничивать отображение восемью значащими символами перед точкой.
Поскольку stdatomic.h имеет 9 символов перед точкой, противоречит ли это (потенциальному) ограничению выше?
Нет, потому что, хотя в нем используется слово «ограничение», это не ограничение языка или реализации. Это свобода, предоставляемая реализациям.
т.е. что некоторые реализации не будут различать stdatomic.h и (например) stdatomix.h при использовании их в качестве аргумента для директивы #include?
То, что реализация не различает эти два имени в качестве включаемых файлов, никоим образом не приведет к несоответствию. Стандарт определяет особое значение директив включения формы
#include <stdatomic.h>
. Пока реализация признает эту директиву и придает ей требуемое значение, для стандарта не имеет значения, будет ли
#include <stdatomix.h>
придается одинаковое значение.
Дополнительный вопрос: почему stdatomic.h, а не atomic.h?
Общепринятым, хотя и не повсеместно соблюдаемым соглашением, является префикс std к именам заголовков стандартных библиотек. Другие примеры включают stdalign.h
, stdarg.h
, stdbool.h
, stddef.h
, stdint.h
, stdio.h
, stdlib.h
и stdnoreturn.h
. Я не уверен в политике комитета по этому поводу, но, безусловно, один из эффектов заключается в уменьшении вероятности того, что имя нового заголовка, добавленного в стандартную библиотеку, конфликтует с именами заголовков, используемых в существующих проектах.
person
John Bollinger
schedule
23.02.2021
stdatomic.h
(7.17.1.2), то у нее не будет ограничения до 8 символов. Хорошо, если это вменяемая реализация. - person Eugene Sh.   schedule 23.02.2021