Qt 文档说:
typedef qint8
有符号字符的 Typedef。这种类型保证在 Qt 支持的所有平台上都是 8 位的。
typedef qint16
Typedef 为有符号的缩写。这种类型保证在 Qt 支持的所有平台上都是 16 位的。
typedef qint32
有符号整数的 Typedef。这种类型保证在 Qt 支持的所有平台上都是 32 位的。
typedef qint64
用于 long long int 的 Typedef(Windows 上的 __int64)。这种类型保证在 Qt 支持的所有平台上都是 64 位的。
类型定义 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 位长。据我所知,在 64 位架构上[编辑:我错了。请参阅下面的评论。]int
s 是(或至少可以是)64 位长。
他们如何保证尺寸?他们为什么不使用stdint
(和 __intN 在 Windows 平台上)?