Я хочу распечатать переменную типа 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
?