Dokładne liczby całkowite w C ++ / Qt: Czy typedef int qint32 jest naprawdę poprawny?

Dokumentacja Qt mówi:

typedef qint8

Typedef dla podpisanego znaku. Ten typ jest gwarantowany jako 8-bitowy na wszystkich platformach obsługiwanych przez Qt.

typedef qint16

Typedef na podpisane krótkie. Ten typ jest gwarantowany jako 16-bitowy na wszystkich platformach obsługiwanych przez Qt.

typedef qint32

Typedef dla podpisanego int. Ten typ jest gwarantowany jako 32-bitowy na wszystkich platformach obsługiwanych przez Qt.

typedef qint64

Typedef dla long long int (__int64 w systemie Windows). Ten typ jest gwarantowany jako 64-bitowy na wszystkich platformach obsługiwanych przez Qt.

Typy są zdefiniowane wqglobal.h następująco:

/*
   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 */
//....

Ale zastanawiam się, jak (na przykład)qint32 zawsze może mieć długość 32 bitów, jeśli nie ma takiej gwarancjiint ma 32 bity długości.O ile wiem, na architekturach 64-bitowychints są (lub przynajmniej mogą być) 64-bitowe. [EDIT: Myliłem się. Zobacz komentarze poniżej.]

Jak mogą zagwarantować rozmiary? Dlaczego nie używająstdint (i __intN na platformach Windows)?

questionAnswers(2)

yourAnswerToTheQuestion