В моем 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-бит HW). Благодаря!
Реальный вопрос: «Как я могу получить куб.см до * не * предупреждать о {% г с длинными}, на машинах, где долго = = int, потому что по какой-либо причине (вероятно, MS-совместимость) int32_t был определен как long, а не int на машине, и люди настаивают на использовании int32_t везде, и я действительно не хочу ставить (int) перед каждым одна вещь передана printf ". – greggo