Я хочу распечатать переменную типа size_t
C, но похоже, что size_t
она привязана к разным типам переменных на разных архитектурах. Например, на одной машине (64-битной) следующий код не выдает никаких предупреждений:
size_t size = 1;
printf("the size is %ld", size);
но на моей другой машине (32-разрядной) приведенный выше код выдает следующее предупреждающее сообщение:
предупреждение: формат '% ld' ожидает тип 'long int *', но аргумент 3 имеет тип 'size_t *'
Я подозреваю, что это связано с разницей в размере указателя, так что на моей 64-битной машине size_t
это псевдоним long int
( "%ld"
), тогда как на моей 32-битной машине size_t
псевдоним другого типа.
Есть ли спецификатор формата специально для size_t
?
&
куда-то убирали ?