Он определяет int8_t
как макрос, существование которого может быть проверено с помощью #ifndef int8_t
, предположительно с целью предотвращения определения int8_t
.
Я не знаю почему он делает это так. Было бы разумнее использовать один include guard вокруг всего заголовка <stdint.h>
.
(В предыдущей версии этого ответа, я утверждал, что реализация несоответствующие, так как он определяет int8_t
как макрос Это ненужно, но не инвалид Цитирование N1570 7.1.3:..
Каждый идентификатор с областью файлов, указанный в любом из следующих подклассов (включая будущие направления библиотек), зарезервирован для использования в качестве имени макроса и в качестве идентификатора с областью файла в том же пространстве имен , если любой из связанных с ним заголовков .
Так идентификатор int8_t
зарезервирован для использования в качестве макро и определение макроса по осуществлению, не допускается.)
Что реализация этого от?
Он просто предотвращает множественные включения одних и тех же определений (см. '#ifndef int8_t' в начале?). –
Кроме того, код может использовать '#if SCHAR_MIN == -128' для обеспечения переносимости. – chux