Почему не были введены новые (специфичные для битовой ширины) опции формата printf (), принятые как часть C99?
Исследуя, как сделать кросс-платформенныйprintf()
форматировать строки в C (то есть с учетом количества бит, которые я ожидаю, что каждый целочисленный аргументprintf()
должно быть) я наткнулсяэтот раздел статьи Википедии оprintf()
, В статье рассматриваются нестандартные варианты, которые можно передатьprintf()
форматные строки, такие как (то, что кажется специфичным для Microsoft расширением):
printf("%I32d\n", my32bitInt);
Далее утверждается, что:
ISO C99 includes the inttypes.h header file that includes a number of macros for use in platform-independent printf coding.
... а затем перечисляет набор макросов, которые можно найти в указанном заголовке. Глядя на заголовочный файл, чтобы использовать их, мне нужно написать:
printf("%"PRId32"\n", my32bitInt);
Мой вопрос: я что-то упустил? Это действительно стандартный способ C99 сделать это? Если так, то почему? (Хотя я не удивлен, что я никогда не видел код, который использует строки формата таким образом, так как он кажется таким громоздким ...)