我有以下
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
非常感谢您的任何建议,
官方的C99格式修饰符
—
乔纳森·勒夫勒
size_t
是'z',如中所示"%zu"
。
我相信@kenny的答案最适合
—
jww
uint32_t
,但没有size_t
。@ u0b34a0f6ae的答案包括两者。
乔纳森·莱夫勒(Jonathan Leffler)在第一条评论中第二次提及C89应该是C99
—
bph
uint32_t
从<stdint.h>
或<inttypes.h>
; 如果要使用这些类型,则应升级到C89。作为扩展,GCC可能允许您使用它们,但是C89没有任何此类支持。