Исследуя, как сделать строки кросс-платформенного формата printf()
в C (то есть, принимая во внимание количество битов, которое, как я ожидаю, должен иметь каждый целочисленный аргумент printf()
), я наткнулся на этот раздел статьи Википедии о printf()
. В статье обсуждаются нестандартные параметры, которые могут быть переданы в строки формата printf()
, такие как (похоже, расширение Microsoft):
printf("%I32d\n", my32bitInt);
Далее говорится, что:
ISO C99 включает заголовочный файл inttypes.h, который содержит ряд макросов для использования в независимом от платформы кодировании printf.
... а затем перечисляет набор макросов, которые можно найти в указанном заголовке. Глядя на заголовочный файл, чтобы использовать их, мне пришлось бы написать:
printf("%"PRId32"\n", my32bitInt);
Мой вопрос: я что-то упустил? Это действительно стандартный способ C99? Если да, то почему? (Хотя я не удивлен, что никогда не видел код, который использует строки формата таким образом, поскольку он кажется таким громоздким...)