在我的C代码中,我是fprintf
ing "%lu"
并给出了相应字段的uint32_t
。但是,当我与-Wall
编译GCC,我得到以下警告(版本4.2.4):关于printf()的编译器警告long unsigned int和uint32_t
writeresults.c:16: warning: format '%4lu' expects type 'long unsigned int', but argument 2 has type
`uint32_t'
不是uint32_t
和long unsigned int
在32位架构是一回事吗?如果不删除-Wall
编译器开关或使用类型转换(如果是,如何),可以避免此警告吗?
是的,我仍然在使用32位计算机/ arch/OS /编译器(目前太穷而无法购买新的64位硬件)。谢谢!
真正的问题:“我如何获得GCC到*不*警告在{%长d},在一些机器上长= = int,因为出于某种原因(可能是MS compat),int32_t在机器上被定义为long而不是int,并且人们坚持要在任何地方使用int32_t,而且我真的不想把(int)放在每个单一的东西传递给printf“。 – greggo 2017-09-20 18:38:18