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