gpt4 book ai didi

c++ - C++/Qt 中的精确宽度整数 : Is typedef int qint32 really correct?

转载 作者:搜寻专家 更新时间:2023-10-31 01:14:57 26 4
gpt4 key购买 nike

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 在不能保证 int 是 32 位长的情况下如何总是 32 位长。 据我所知,在 64 位架构上,int 是(或至少可以是)64 位长。 [编辑:我错了。请参阅下面的评论。]

他们如何保证尺寸?他们为什么不使用 stdint(和 __intN 在 Windows 平台上)?

最佳答案

How can they guarantee the sizes?

他们针对他们知道上述定义有效的特定平台。 Qt 不关心其他平台和 other platforms不关心Qt。所以,它并不总是有效。但在它行不通的地方,Qt 也行不通。

Why don't they use stdint (and __intN on windows platforms)?

有时维护 <stdint.h> 中的 typedef 更简单对于您自己的项目,而不是有条件地在拥有它的平台上包含标准 header 并且仍然为没有它的平台(例如 VS2005)保持后备。

关于c++ - C++/Qt 中的精确宽度整数 : Is typedef int qint32 really correct?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com