Якщо ви хочете використовувати Qt , ви повинні прийняти quint8, quint16і так далі.
Якщо ви хочете використовувати GLib , ви повинні вітати guint8, guint16і так далі.
У Linux є u32, s16і так далі.
УНЦ / OS визначає SINT32, UINT16і так далі.
І якщо вам доведеться використовувати якесь поєднання цих речей, то краще будьте готові до неприємностей. Тому що на вашій машині u32буде typedefd над longі quint32буде typedefd над intі компілятор буде скаржитися .
Чому всі це роблять, якщо є <stdint.h>? Це якась традиція для бібліотек?
stdint.hбуло винайдено.
sizeof(int) * CHAR_BIT(наприклад) і використовувати це? Якщо ваш intзанадто малий, щоб представляти діапазон (наприклад, індекс масиву), то ви майже напевно не повинні використовувати intвсе одно, а щось подібне size_t. Чому б це мало int32більше сенсу? Єдиний фіксований по ширині час має сенс для зв'язку між системами (наприклад, формат файлу / мережі) ...
uint16_t(або, можливо, його fastчи leastваріант). Моя думка: ці типи зручні у використанні та мають свою причину існування.
size_tта / або uint64_t.