我有以下内容
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’
我在使用splint运行这个程序时得到了以下内容:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
非常感谢任何建议,
<stdint.h>
жҲ–<inttypes.h>
дёӯзҡ„uint32_t
зұ»еһӢпјӣеҰӮжһңжӮЁжғідҪҝз”Ёиҝҷдәӣзұ»еһӢпјҢеә”иҜҘеҚҮзә§еҲ°C89гҖӮдҪңдёәжү©еұ•пјҢеҫҲеҸҜиғҪGCCе…Ғи®ёжӮЁдҪҝз”Ёе®ғ们пјҢдҪҶжҳҜC89жІЎжңүд»»дҪ•жӯӨзұ»ж”ҜжҢҒгҖӮ - Jonathan Lefflersize_t
类型,官方的C99格式修饰符是'z',例如"%zu"
。 - Jonathan Leffleruint32_t
是最好的,但它缺少了size_t
。@u0b34a0f6ae的答案包含了两者。 - jww