Avertissement du compilateur à propos de printf() de long unsigned int et uint32_t

Dans mon code en C, je suis fprintfing un "%lu" et de donner une uint32_t pour le champ correspondant. Mais, quand je compile avec -Wall de GCC (ver. 4.2.4), j'obtiens le message d'avertissement suivant:

writeresults.c:16: warning: format '%4lu' expects type 'long unsigned int', but argument 2 has type 
`uint32_t'

Ne sont pas un uint32_t et long unsigned int la même chose sur les architectures 32 bits? Peut cet avertissement être évitée sans éliminer la -Wall commutateur de compilateur ou à l'aide d'un transtypage (et si oui, comment)?

Oui, je suis toujours à l'aide d'un ordinateur 32 bits/arch/OS/compilateur (trop pauvre pour le moment de s'offrir de nouveaux 64 bits HW). Merci!

Vraie question: "Comment puis-je obtenir gcc pas avertir sur {%d avec de longs}, sur les machines où long == int, parce que, pour une raison quelconque (probablement MS compat) le int32_t a été défini comme le long au lieu de int sur la machine, et les gens insistent sur l'utilisation de int32_t partout, et je ne veux vraiment pas mettre (int) devant chaque chose, passé à printf".

OriginalL'auteur pr1268 | 2011-02-10