Подтвердить что ты не робот

Хорошее введение в <inttypes.h>

Я хочу рекомендовать использование <inttypes.h> кому-то, делающему printf со смешанными 32/64 бит-битами. Я попробовал Google введение или учебную страницу с несколькими примерами и рекомендациями по использованию, но я не смог найти ее.

Может кто-то порекомендовать введение или учебник для <inttypes.h>?

4b9b3361

Ответ 1

Попробуйте http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/inttypes.h.html для начала.

Лучший пример использования новых переносимых макросов форматирования был найден в avr-libc. Я привел пример (из ссылки) для иллюстрации. библиотеки QNX также имеют более удобное для человека описание (если вам не нравится чтение спецификации холодно), хотя вам нужно прокручивать почти до конец страницы, чтобы добраться до мяса описаний.

#include <inttypes.h>

uint8_t smallval;
int32_t longval;
...
printf("The hexadecimal value of smallval is %" PRIx8
       ", the decimal value of longval is %" PRId32 ".\n",
       smallval, longval);

Обратите внимание, что для этого используется оператор сцепления "String" "String" для вывода строки (в этом примере)

"The hexadecimal value of smallval is %x, the decimal value of longval is %ld.\n"

Попытка разложения соглашения об именах, как представляется, указывает:

  • (первые три буквы)
    • PRI для формата printf
    • SCN для формата scanf
  • (четвертая буква)
    • x для шестнадцатеричного форматирования
    • u для форматирования без знака
    • o для восьмеричного форматирования
    • я для целочисленного форматирования
    • d для десятичного форматирования
  • (дополнительные буквы)
    • 8 для восьми бит
    • 16 для шестнадцати бит
    • 32 для тридцати двух бит
    • 64 для шестидесяти четырех бит
    • FAST8 для "быстрого" восьми бит
    • FAST16 для "быстрого" шестнадцатибитного
    • FAST32 для "быстрого" тридцати двух бит.
    • FAST64 для "быстрого" шестидесяти четырех бит
    • LEAST8 для "наименее" восьми бит
    • LEAST16 для "наименее" шестнадцати бит
    • LEAST32 для "наименее" тридцать два бита
    • LEAST64 для "наименее" шестидесяти четырех бит
    • PTR для указателя
    • Максимальный размер поддерживаемого бита MAX

поэтому PRIx8 означает команду printf format для форматирования шестнадцатеричных восьми бит.

Ответ 2

Я всегда подхожу к стандарту (ссылка в формате PDF) для этих вещей; они не слишком сложны, как только вы определяете шаблоны, в которых они настроены. Соответствующий раздел §7.8 Преобразование формата целых типов <inttypes.h>.

Ответ 3

HP Имеет хорошую ссылку на запись переносного кода, и они дают некоторые конкретные советы по использованию inttypes.h

Написание переносного кода

Ответ 4

Я всегда нахожусь в Википедии, чтобы посмотреть заголовок. <inttypes.h> кажется очень проблематичным в Википедии. Следующий шаг, который я сделал бы, - это этот сайт. Этот предыдущий сайт перечисляет каждый макрос и дает пример. Вы также можете проверить этот сайт, который на самом деле показывает вам файл заголовка. Я не думаю, что любой из них действительно является учебным пособием для каждого, но они являются хорошим прыжком.