Saya sering melihat kode sumber menggunakan jenis seperti uint32, uint64 dan saya bertanya-tanya apakah mereka harus didefinisikan oleh programmer dalam kode aplikasi atau jika mereka didefinisikan dalam header lib standar.
Apa cara terbaik untuk memiliki jenis ini di kode sumber aplikasi saya?
int_leastNN_t
danuint_leastNN_t
untukNN
8, 16, 32, dan 64 harus selalu ada . C99 tidak mengizinkan implementasi tanpa tipe integer minimal 64 bit, karenalong long
harus paling tidak sebesar itu.stdint.h
membutuhkan semuanya.typedef uint32_t Uint32;
di include / SDL_stdinc.h (jika Anda adalah pengguna SDL)Jenis bilangan bulat tersebut semuanya didefinisikan dalam
stdint.h
sumber
stdint.h
penerapannya khusus? Juga lihat pertanyaan ini dan pertanyaan inistdint.h
jika Anda menghormati standar C99.stdint.h
. Ini mengembalikan 0 hits:grep uint32 /usr/lib/gcc/x86_64-linux-gnu/4.9/include/stdint.h | grep -v uint32_t
.#include "stdint-gcc.h"
, dan grepping bahwa berkas menghasilkan definisi._t
sufiks, seperti yang tercantum pada jawaban di atas.Jika Anda menggunakan C99, sertakan saja
stdint.h
. BTW, tipe 64bit ada jika prosesor mendukungnya.sumber
uint128_t
jika__SIZEOF_INT128__
ditetapkan ke 16 atau lebih besar (GCC dan kompatibel). Ini tersedia di mesin x86_64 / amd64, tetapi prosesor tidak mendukungnya. Hanya Cray yang memiliki ukuran register itu, IIRC.Penanya sebenarnya bertanya tentang int16 (dll) daripada (jelek) int16_t (dll).
Tidak ada header standar - juga tidak ada di / usr / include / folder Linux yang mendefinisikannya tanpa "_t".
sumber