Точные значения ширины в C ++ / Qt: действительно ли typedef int qint32 действительно корректен?

Документация Qt гласит:

typedef qint8

Typedef for signed char. This type is guaranteed to be 8-bit on all platforms supported by Qt.

typedef qint16

Typedef for signed short. This type is guaranteed to be 16-bit on all platforms supported by Qt.

typedef qint32

Typedef for signed int. This type is guaranteed to be 32-bit on all platforms supported by Qt.

typedef qint64

Typedef for long long int (__int64 on Windows). This type is guaranteed to be 64-bit on all platforms supported by Qt.

Типы определены вqglobal.h следующее:

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

Но мне интересно, как (например)qint32 всегда может быть длиной 32 бита, если нет гарантии, чтоint длиной 32 бита.As far as I know, on 64-bit architectures ints are (or at least can be) 64 bits long. [Редактировать: я был не прав. Смотрите комментарии ниже.]

Как они могут гарантировать размеры? Почему они не используютstdint (и __intN на платформах Windows)?

Ответы на вопрос(2)

Ваш ответ на вопрос