106 Stimmen

Plattformunabhängige size_t Formatbezeichner in c?

Ich möchte eine Variable vom Typ size_t in C, aber es scheint, dass size_t wird auf verschiedenen Architekturen auf verschiedene Variablentypen verlagert. Auf einem Rechner (64-Bit) löst der folgende Code beispielsweise keine Warnungen aus:

size_t size = 1;
printf("the size is %ld", size);

aber auf meinem anderen Rechner (32-Bit) erzeugt der obige Code die folgende Warnmeldung:

Warnung: Format '%ld' erwartet Typ 'long int *', aber Argument 3 hat den Typ 'size_t *'

Ich vermute, dass dies auf den Unterschied in der Zeigergröße zurückzuführen ist, so dass auf meinem 64-Bit-Rechner size_t ist ein Alias für eine long int ( "%ld" ), während auf meinem 32-Bit-Rechner size_t einem anderen Typ zugeordnet ist.

Gibt es einen Formatspezifizierer speziell für size_t ?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X