Ich habe folgendesprintf Formatbezeich für uint32_t und size_t
size_t i = 0;
uint32_t k = 0;
printf("i [ %lu ] k [ %u ]\n", i, k);
erhalte ich die folgende Warnung beim Kompilieren:
format ‘%lu’ expects type ‘long unsigned int’, but argument has type ‘uint32_t’
Wenn ich diese mit Schiene lief ich folgendes bekam:
Format argument 1 to printf (%u) expects unsigned int gets size_t: k
Vielen Dank für eine Beratung,
C89 unterstützt 'uint32_t' nicht von' 'oder' ''; Wenn Sie diese Typen verwenden möchten, sollten Sie auf C89 aktualisieren. Als Erweiterung ist es wahrscheinlich, dass der GCC Ihnen erlaubt, sie zu verwenden, aber C89 hatte keine solche Unterstützung. –
Und der offizielle C99-Format-Modifikator für 'size_t' ist 'z', wie in' "% zu" '. –
http://stackoverflow.com/questions/1401526/how-to-use-printf-to-display-off-t-nlink-t-size-t-and-other-special-types –