Ich möchte eine Variable vom Typ size_t
in C ausdrucken, aber es scheint, dass size_t
sie auf verschiedene Variablentypen auf verschiedenen Architekturen ausgerichtet ist. Auf einem Computer (64-Bit) gibt der folgende Code beispielsweise keine Warnungen aus:
size_t size = 1;
printf("the size is %ld", size);
Auf meinem anderen Computer (32-Bit) erzeugt der obige Code jedoch die folgende Warnmeldung:
Warnung: Das Format '% ld' erwartet den Typ 'long int *', aber Argument 3 hat den Typ 'size_t *'.
Ich vermute, dass dies auf die unterschiedliche size_t
Zeigergröße zurückzuführen ist , sodass auf meinem 64-Bit-Computer ein Alias für a long int
( "%ld"
) erfolgt, während auf meinem 32-Bit-Computer size_t
ein Alias für einen anderen Typ erfolgt.
Gibt es einen speziellen Formatbezeichner für size_t
?
warning: format '%ld' expects type 'long int *', but argument 3 has type 'size_t *'
wenn es wahrscheinlich soll sagen werden warning: format '%ld' expects type 'long int', but argument 3 has type 'size_t'
. Haben Sie vielleicht scanf()
stattdessen verwendet, als Sie diese Warnungen erhielten?
&
irgendwo welche entfernt?