Хорошее введение в [закрыто]

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

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

4 ответов


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

лучший пример использования новых переносных макросов форматирования был найден в АВР-библиотеки 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 для восьмеричного форматирования
    • i для целочисленного форматирования
    • d для десятичного форматирования
  • (лишние буквы)
    • 8 для восьми бит
    • 16 для шестнадцати бит
    • 32 за тридцать два бита
    • 64 для 64 бит
    • FAST8 для "быстрого" восемь бит
    • FAST16 для" быстрых " шестнадцати бит
    • FAST32 для "быстрого" тридцать два бит
    • FAST64 для "быстрого" шестьдесят четыре бит
    • LEAST8 для "минимум" восемь бит
    • LEAST16 для" минимум " шестнадцать бит
    • LEAST32 для "минимум" тридцать два бита
    • LEAST64 для" минимум " шестьдесят четыре бит
    • PTR для указателя
    • MAX для максимального поддерживаемого размера бита

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


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


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

Написание Переносимого Кода


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