Search code examples
c++qtcross-platformbuilt-in-types

Do types in QT applications for different platforms have similar size?


I created an application for Windows in C++ using QT. If I want to port it to Linux or Mac OS, will sizeof(int) or sizeof(long) change? In other words, do types in QT applications for different platforms have similar size?


Solution

  • In addition to stefaanv's answer, if you're worried about their size, use quint32 and friends. Qt guarantees them to be the same size on all supported platforms.

    Check out QtGlobal:

    The header file declares several type definitions that guarantee a specified bit-size on all platforms supported by Qt for various basic types, for example qint8 which is a signed char guaranteed to be 8-bit on all platforms supported by Qt. The header file also declares the qlonglong type definition for long long int (__int64 on Windows).

    Several convenience type definitions are declared: qreal for double, uchar for unsigned char, uint for unsigned int, ulong for unsigned long and ushort for unsigned short.

    Or, if you want a more standard solution, there's stdint.h. I like using Qt all the way, because then the porting is literally just running qmake on a different platform.