Genaue Ganzzahlen in C ++ / Qt: Ist typedef int qint32 wirklich korrekt?

In der Qt-Dokumentation heißt es:

typedef qint8

Typedef für signiertes Zeichen. Dieser Typ ist auf allen von Qt unterstützten Plattformen garantiert 8-Bit.

typedef qint16

Typedef für signierte Kurzform. Dieser Typ ist auf allen von Qt unterstützten Plattformen garantiert 16-Bit.

typedef qint32

Typedef für signiertes int. Dieser Typ ist auf allen von Qt unterstützten Plattformen garantiert 32-Bit.

typedef qint64

Typedef für long long int (__int64 unter Windows). Dieser Typ ist auf allen von Qt unterstützten Plattformen garantiert 64-Bit.

Die Typen sind in definiertqglobal.h wie folgt:

/*
   Size-dependent types (architechture-dependent byte order)
   Make sure to update QMetaType when changing these typedefs
*/
typedef signed char qint8;         /* 8 bit signed */
typedef unsigned char quint8;      /* 8 bit unsigned */
typedef short qint16;              /* 16 bit signed */
typedef unsigned short quint16;    /* 16 bit unsigned */
typedef int qint32;                /* 32 bit signed */
typedef unsigned int quint32;      /* 32 bit unsigned */
//....

Aber ich frage mich, wie (zum Beispiel)qint32 kann immer 32 Bit lang sein, wenn es keine Garantie dafür gibtint ist 32 Bits lang.Soweit ich weiß, auf 64-Bit-Architekturenints sind 64 Bit lang (oder können es zumindest sein). [EDIT: Ich habe mich geirrt. Siehe Kommentare unten.]

Wie können sie die Größen garantieren? Warum benutzen sie nichtstdint (und __intN auf Windows-Plattformen)?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage