【发布时间】:2012-05-21 20:21:51
【问题描述】:
Qt 文档说:
typedef qint8
有符号字符的类型定义。此类型保证在 Qt 支持的所有平台上都是 8 位的。
typedef qint16
Typedef 为有符号的缩写。此类型保证在 Qt 支持的所有平台上都是 16 位的。
typedef qint32
有符号整数的类型定义。此类型保证在 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 在不能保证 int 是 32 位长的情况下总是可以是 32 位长。 据我所知,在 64 位架构上, [编辑:我错了。请参阅下面的 cmets。]ints 是(或至少可以是)64 位长。
他们如何保证尺寸?他们为什么不使用stdint(以及Windows平台上的__intN)?
【问题讨论】:
-
这不一定适用于所有平台,只适用于 Qt 支持的所有平台。
-
是的,但是 Qt 也支持 64 位平台。
-
@leemes -
int在这些平台上仍然是 32 位。但long可能会有所不同。 -
@BoPersson 好的,谢谢,我不知道。对不起,有点离题的问题:在 64 位平台上,
int是否与 64 位long一样快? -
@leemes - 在 Qt 支持的平台(x86-64?)上,
int操作比 64 位值短一个字节,使用的数据更少。这可能会使其更快。另一方面,一个 64 位运算处理两倍的数据量,如果你需要它。
标签: c++ qt cross-platform