Tôi đã sauđịnh dạng printf specifiers cho uint32_t và size_t
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
tôi nhận được cảnh báo sau khi biên dịch:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Khi tôi chạy này bằng nẹp tôi đã nhận như sau:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Rất cám ơn mọi lời khuyên,
C89 không hỗ trợ 'uint32_t' từ' 'hoặc' '; nếu bạn muốn sử dụng các loại đó, bạn nên nâng cấp lên C89. Là một phần mở rộng, có khả năng GCC cho phép bạn sử dụng chúng, nhưng C89 không có bất kỳ sự hỗ trợ nào như vậy. –
Và công cụ sửa đổi định dạng C99 chính thức cho 'size_t' là 'z', như trong' "% zu" '. –
http://stackoverflow.com/questions/1401526/how-to-use-printf-to-display-off-t-nlink-t-size-t-and-other-special-types –