Ho il seguente
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
Ricevo il seguente avviso durante la compilazione:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Quando l'ho eseguito utilizzando splint ho ottenuto quanto segue:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Molte grazie per qualsiasi consiglio,
size_t
è "z", come in "%zu"
.
uint32_t
, ma manca size_t
. La risposta di @ u0b34a0f6ae include entrambi.
uint32_t
da<stdint.h>
o<inttypes.h>
; se vuoi usare questi tipi, dovresti aggiornare a C89. Come estensione, è probabile che GCC ti consenta di usarli, ma C89 non aveva tale supporto.