Câu trả lời:
C99 stdint.h
xác định những điều này:
int8_t
int16_t
int32_t
uint8_t
uint16_t
uint32_t
Và, nếu kiến trúc hỗ trợ chúng:
int64_t
uint64_t
Cũng có nhiều kiểu gõ số nguyên khác nhau stdint.h
.
Nếu bạn gặp khó khăn khi không có môi trường C99 thì có lẽ bạn nên cung cấp các typedef của riêng mình và sử dụng các loại C99.
Các uint32
và uint64
(tức là nếu không có sự _t
hậu tố) có lẽ là ứng dụng cụ thể.
stdint.h
yêu cầu tất cả.
typedef uint32_t Uint32;
trong bao gồm / SDL_stdinc.h (nếu bạn là SDL người dùng)
Tất cả các kiểu số nguyên đó đều được định nghĩa trong stdint.h
stdint.h
nếu bạn tôn trọng tiêu chuẩn C99.
stdint.h
. Này trả về 0 lượt truy cập: grep uint32 /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h | grep -v uint32_t
.
#include "stdint-gcc.h"
và việc trộn tệp đó sẽ mang lại các định nghĩa.
_t
hậu tố, như được liệt kê trong câu trả lời ở trên.
Nếu bạn đang sử dụng C99 chỉ cần bao gồm stdint.h
. BTW, các loại 64bit có iff bộ xử lý hỗ trợ chúng.
uint128_t
if __SIZEOF_INT128__
được xác định là 16 hoặc lớn hơn (GCC và tương thích). Nó có sẵn trên các máy x86_64 / amd64, nhưng bộ vi xử lý không hỗ trợ nó. Chỉ Cray có kích thước thanh ghi đó, IIRC.
int_leastNN_t
vàuint_leastNN_t
choNN
8, 16, 32 và 64 phải luôn tồn tại . C99 không cho phép triển khai mà không có kiểu số nguyên ít nhất 64 bit, vìlong long
nó được yêu cầu ít nhất là lớn.