У мене є таке
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
Я отримую таке попередження при компілюванні:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Коли я запустив це за допомогою шини, я отримав наступне:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Дякую за будь-яку пораду,
size_t
"z", як у "%zu"
.
uint32_t
, але її немає size_t
. @ u0b34a0f6ae відповідь включає і те, і інше.
uint32_t
від<stdint.h>
або<inttypes.h>
; якщо ви хочете використовувати ці типи, вам слід оновити до C89. Як розширення, ймовірно, що GCC дозволяє вам використовувати їх, але C89 не мав такої підтримки.