Qtのドキュメントには次のように書かれています:
typedef qint8
signed char の Typedef。この型は、Qt がサポートするすべてのプラットフォームで 8 ビットであることが保証されています。
typedef qint16
signed short の Typedef。このタイプは、Qt がサポートするすべてのプラットフォームで 16 ビットであることが保証されています。
typedef qint32
signed int の 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ビット長であるという保証がない場合、(たとえば)どのようにして常に32ビット長になることができるのか疑問に思っていますint
。私の知る限り、64 ビット アーキテクチャ【追記:間違えました。以下のコメントを参照してください。]int
では s の長さは 64 ビットです (または少なくとも可能です)。
どのようにサイズを保証できますか? なぜ彼らはstdint
(そして Windows プラットフォームでは __intN を) 使用しないのでしょうか?