在我的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