Robert B.: C mal wieder, Länge einer Binary

Beitrag lesen

Hi Christian,

abgesehen davon, dass %d die falsche Formatangabe für size_t ist!

Nein, es ist der richtige. Es fehlt nur der length modifier z:

Length modifier

Here, "integer conversion" stands for d, i, o, u, x, or X conversion. […]

  • z A following integer conversion corresponds to a size_t or ssize_t argument, or a following n conversion corresponds to a pointer to a size_t argument.

Das richtige Format für size_t ist "%zd" (bzw "%zx" wenn der Wert hexadezimal dargestellt werden soll).

Wie oft soll man dir das eigentlich noch erklären, bis du mal einen size_t hast, der $$\ge 2^{31}$$ ist?!

Ja, der length modifier z sollte wirklich nicht fehlen.

vielen Dank für den Hinweis. Warum beschweren sich die Compiler hier eigentlich eher über ein fehlendes l anstatt gleich auf z hinzuweisen? Die Parameter für printf & Co werden doch mittlerweile standardmäßig geprüft.

Viele Grüße
Robert