Largura exata inteiros em C ++ / Qt: O typedef int qint32 está realmente correto?

A documentação do Qt diz:

typedef qint8

Typedef para char assinado. Este tipo é garantido para ser de 8 bits em todas as plataformas suportadas pelo Qt.

typedef qint16

Typedef para short assinado. Este tipo é garantido para ser de 16 bits em todas as plataformas suportadas pelo Qt.

typedef qint32

Typedef para int assinado. Este tipo é garantido para ser de 32 bits em todas as plataformas suportadas pelo Qt.

typedef qint64

Typedef para long long int (__int64 no Windows). Este tipo é garantido para ser de 64 bits em todas as plataformas suportadas pelo Qt.

Os tipos são definidos emqglobal.h do seguinte modo:

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

Mas eu estou querendo saber como (por exemplo)qint32 pode sempre ter 32 bits quando não há garantia de queint tem 32 bits de comprimento.Tanto quanto eu sei, em arquiteturas de 64 bitsints são (ou pelo menos podem ser) 64 bits de comprimento. [EDIT: Eu estava errado. Veja os comentários abaixo.]

Como eles podem garantir os tamanhos? Por que eles não usamstdint (e __intN em plataformas Windows)?

questionAnswers(2)

yourAnswerToTheQuestion