Ich möchte eine Variable vom Typ size_tin C ausdrucken, aber es scheint, dass size_tsie 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_tZeigergröß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_tein 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?