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