Porównaj ceny domen i usług IT, sprzedawców z całego świata

dlaczego u8 u16 u32 u64 jest używane zamiast unsigned int w programowaniu jądra


Widzę, że kod jądra używa typów danych u8 u16 u32 u64. Zastanawiam się, dlaczego należy używać
u8
lub
u16
lub
u32
lub
u64
zamiast
unsigned int
?
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Często pracując blisko sprzętu lub próbując kontrolować rozmiar/format struktury danych, musisz mieć dokładną kontrolę nad rozmiarem liczb całkowitych.
Jeśli chodzi o
u8
vs
uint8_t
, dzieje się tak po prostu dlatego, że Linux poprzedzał
& < stdint.h & >
i był dostępny w języku C , który technicznie jest C99-izmem, ale z mojego doświadczenia wynika, że ​​jest dostępny na większości nowoczesnych kompilatorów, nawet w ich trybach ANSI-C/C89.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Dodaj moje 10 centów do

ta odpowiedź
https://stackoverflow.com/a/30896945/1582649
:
u64
oznacza wartość „bez znaku 64 bity”, więc w zależności od architektury, w której kod będzie uruchamiany/kompilowany, musi być zdefiniowany inaczej, aby w rzeczywistości miał 64 bity.
Na przykład na komputerze x86 długość
unsigned long
wynosi 64 bity, więc
u64
dla tej maszyny można zdefiniować w następujący sposób:
typedef unsigned long u64;
To samo dotyczy
u32
. Na komputerze x86 długość
unsigned int
wynosi 32 bity, więc
u32
dla tego komputera można zdefiniować w następujący sposób:
typedef unsigned int u32;
Zwykle deklaracja
typedef
dla tych typów znajduje się w pliku
types.h
, który odpowiada architekturze, w której kompilujesz kod źródłowy.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się