Ich habe folgendes
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
Beim Kompilieren wird folgende Warnung angezeigt:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Als ich dies mit einer Schiene ausführte, bekam ich Folgendes:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Vielen Dank für jeden Rat,
size_t
ist 'z', wie in "%zu"
.
uint32_t
, aber es fehlt size_t
. Die Antwort von @ u0b34a0f6ae beinhaltet beides.
uint32_t
von<stdint.h>
oder<inttypes.h>
; Wenn Sie diese Typen verwenden möchten, sollten Sie ein Upgrade auf C89 durchführen. Als Erweiterung ist es wahrscheinlich, dass GCC Ihnen die Verwendung erlaubt, aber C89 hatte keine solche Unterstützung.