Відповіді:
C99 stdint.h
визначає такі:
int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
І, якщо архітектура їх підтримує:
int64_t
uint64_t
Також є різні інші цілі типи дефісів stdint.h
.
Якщо ви застрягли без середовища C99, то, ймовірно, вам слід надати свої власні typedefs і в будь-якому разі використовувати C99.
uint32
І uint64
(тобто без _t
суфікса), ймовірно , конкретне застосування.
stdint.h
вимагає їх усіх.
typedef uint32_t Uint32;
у include / SDL_stdinc.h (якщо ви користувач SDL)
Ці цілі типи всі визначені в stdint.h
stdint.h
якщо дотримуєтесь стандарту C99.
stdint.h
. Це повертає 0 хіти: grep uint32 /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h | grep -v uint32_t
.
#include "stdint-gcc.h"
, а прив'язка до цього файлу дає визначення.
_t
суфіксом, як зазначено у відповіді вище.
Якщо ви використовуєте C99, просто включіть stdint.h
. До речі, 64-бітові типи існують, якщо процесор їх підтримує.
uint128_t
if, __SIZEOF_INT128__
який визначається рівним 16 або більше (GCC та сумісність). Він доступний на x86_64 / amd64, але процесор не підтримує його. Тільки Cray мають розмір регістра, IIRC.
int_leastNN_t
іuint_leastNN_t
дляNN
8, 16, 32 і 64 повинні завжди існують . C99 не дозволяє реалізувати без цілого типу принаймні 64 біт, оскількиlong long
потрібно бути принаймні таким великим.