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