From 49609f58a58c938d74a3cb300633f914d5334dda Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo Date: Fri, 23 Apr 2021 11:49:34 +0200 Subject: [PATCH] Fixed type integers: streamline the definitions On all the platforms we support, we require these sizes in bits: * char: 8 * short: 16 * int: 32 * long long: 64 We can get rid of the MSVC-specific type aliases (MSVC guarantees __intXX to be aliases anyhow, not extended integer types) and just use the builtin types. Also, we require C++11 and C99, so "LL" and "ULL" are the correct standard suffixes for (unsigned) long long. Remove the non-standard suffixes from the Q_(U)INT64_C macros. Change-Id: If007cd88d74064a163b5e910ca1983acd1dd1d10 Reviewed-by: Volker Hilsheimer Reviewed-by: Qt CI Bot Reviewed-by: Thiago Macieira --- src/corelib/global/qglobal.cpp | 9 ++++----- src/corelib/global/qglobal.h | 9 ++------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index 3e21d41bbb0..2d5e647739c 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -786,8 +786,8 @@ static_assert(sizeof(qint64) == 8, "Internal error, qint64 is misdefined"); /*! \typedef qint64 \relates - Typedef for \c{long long int} (\c __int64 on Windows). This type - is guaranteed to be 64-bit on all platforms supported by Qt. + Typedef for \c{long long int}. This type is guaranteed to be 64-bit + on all platforms supported by Qt. Literals of this type can be created using the Q_INT64_C() macro: @@ -800,9 +800,8 @@ static_assert(sizeof(qint64) == 8, "Internal error, qint64 is misdefined"); \typedef quint64 \relates - Typedef for \c{unsigned long long int} (\c{unsigned __int64} on - Windows). This type is guaranteed to be 64-bit on all platforms - supported by Qt. + Typedef for \c{unsigned long long int}. This type is guaranteed to + be 64-bit on all platforms supported by Qt. Literals of this type can be created using the Q_UINT64_C() macro: diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h index aa9f26e982b..c3de245a324 100644 --- a/src/corelib/global/qglobal.h +++ b/src/corelib/global/qglobal.h @@ -226,12 +226,8 @@ 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 */ -#if defined(Q_OS_WIN) && !defined(Q_CC_GNU) -# define Q_INT64_C(c) c ## i64 /* signed 64 bit constant */ -# define Q_UINT64_C(c) c ## ui64 /* unsigned 64 bit constant */ -typedef __int64 qint64; /* 64 bit signed */ -typedef unsigned __int64 quint64; /* 64 bit unsigned */ -#else +// Unlike LL / ULL in C++, for historical reasons, we force the +// result to be of the requested type. #ifdef __cplusplus # define Q_INT64_C(c) static_cast(c ## LL) /* signed 64 bit constant */ # define Q_UINT64_C(c) static_cast(c ## ULL) /* unsigned 64 bit constant */ @@ -241,7 +237,6 @@ typedef unsigned __int64 quint64; /* 64 bit unsigned */ #endif typedef long long qint64; /* 64 bit signed */ typedef unsigned long long quint64; /* 64 bit unsigned */ -#endif typedef qint64 qlonglong; typedef quint64 qulonglong;