Имеют ли типы в приложениях QT для разных платформ одинаковый размер? - PullRequest
2 голосов
/ 14 ноября 2009

Я создал приложение для Windows на C ++, используя QT. Если я захочу перенести его на Linux или Mac OS, изменится ли sizeof(int) или sizeof(long)? Другими словами, имеют ли типы в приложениях QT для разных платформ одинаковый размер?

Ответы [ 3 ]

10 голосов
/ 14 ноября 2009

В дополнение к ответу stefaanv, если вас беспокоит их размер, используйте quint32 и друзей. Qt гарантирует, что они будут одинакового размера на всех поддерживаемых платформах.

Проверить QtGlobal :

Заголовочный файл объявляет несколько определений типов, которые гарантируют заданный размер битов на всех платформах, поддерживаемых Qt для различных базовых типов, например, qint8, который является символом со знаком, гарантированно 8-битным на всех платформах, поддерживаемых Qt. Заголовочный файл также объявляет определение типа qlonglong для long long int (__int64 в Windows).

Объявлено несколько определений вспомогательного типа: qreal для double, uchar для unsigned char, uint для unsigned int, ulong для unsigned long и ushort для unsigned short.

Или, если вам нужно более стандартное решение, есть stdint.h . Мне все время нравится использовать Qt, потому что портирование буквально просто запускает qmake на другой платформе.

7 голосов
/ 14 ноября 2009

int и long являются типами C ++. У них нет фиксированного размера, определенного стандартом.

1 голос
/ 14 ноября 2009

Другими словами, делать типы в QT приложения для разных платформ имеют одинаковый размер?

Прежде всего, Qt, а не QT (Quick Time). Во-вторых, если вы хотите иметь несколько типов, которые гарантируют заданный битовый размер на всех платформах, поддерживаемых Qt, хорошая идея - использовать typedefs из QtGlobal . qint8, ...

...