Я прочитал в C99 standard, что stdint.h
является частью стандартной библиотеки C.stdint.h и C99
Правильно ли я прочитал, что, если я проверить на соответствие C99, используя:
defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L)
, что означает stdint.h
должен быть доступен?
Возможный случай: могу ли я рассмотреть среду, которая претендует на то, что она соответствует требованиям C99
, но не предусматривает stdint.h
, чтобы быть в противоречии с ее собственным заявлением о соответствии, следовательно, ошибкой?
Редактировать: для любознательных, рассматриваемая система является OpenVMS с HP C Compiler (не ССАГПЗ, который на OpenVMS не предусматривает stdint.h
). Поэтому в соответствии с ответами и комментариями, полученными до сих пор, я должен рассматривать эту реализацию (которая претендует на роль C99) как багги. Для получения более подробной информации: https://groups.google.com/forum/#!topic/comp.os.vms/Bnh3tIOc7bo%5B101-125%5D
Это не очень надежный. Solaris 7, например, предоставляет 'inttypes', но не' stdint'. Я бы отказался от любых специальных определений и просто использовал ['autoconf'] (https://www.gnu.org/software/autoconf/autoconf.html) –
@ user6292850: Вы говорите, что Solaris 7 (выпущен в 1998 году) заявила C99, определяя '__STDC_VERSION__' значение не менее $ 199901L? – rici
@rici Учитывая, что [inttypes] (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/inttypes.h.html) требует 'stdint.h', по определению ... –