У меня есть следующиеспецификаторы формата Printf для uint32_t и size_t
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
благодарит за любые замечания,
C89 не поддерживает 'uint32_t' из' 'или' '; если вы хотите использовать эти типы, вам следует перейти на C89. Как расширение, вполне вероятно, что GCC позволяет вам использовать их, но C89 не имеет такой поддержки. –
И официальным модификатором формата C99 для 'size_t' является 'z', как в' '% zu''. –
http://stackoverflow.com/questions/1401526/how-to-use-printf-to-display-off-t-nlink-t-size-t-and-other-special-types –