Platform niezależny size_t Specyfikatory formatu w c?
Chcę wydrukować zmienną typusize_t
w C, ale wygląda na tosize_t
jest aliasowany do różnych typów zmiennych na różnych architekturach. Na przykład na jednym komputerze (64-bitowym) poniższy kod nie wysyła żadnych ostrzeżeń:
size_t size = 1;
printf("the size is %ld", size);
ale na moim innym komputerze (32-bitowym) powyższy kod generuje następujący komunikat ostrzegawczy:
ostrzeżenie: format '% ld' oczekuje typu 'long int *', ale argument 3 ma typ 'size_t *'
Podejrzewam, że wynika to z różnicy w rozmiarze wskaźnika, więc na moim komputerze 64-bitowymsize_t
jest aliasowany dolong int
("%ld"
), podczas gdy na moim 32-bitowym komputerzesize_t
jest aliasowany do innego typu.
Czy istnieje konkretny specyfikator formatusize_t
?