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?

questionAnswers(3)

yourAnswerToTheQuestion