Как правильно выровнять конструкцию?
Я пытаюсь выровнять структуру с помощью директивы (#pragma pack).
Мне нужен размер 112 байт. (14*8=112 байт).
Однако у него всего 80 байт.
Как это сделать правильно?
#pragma pack (8)
struct Deal
{
long deal_ticket;
long order_ticket;
long position_ticket;
long time;
long type;
long entry;
char symbol[8];
double volume;
double price;
double profit;
double swap;
double commission;
long magic;
long reason;
};
int main()
{
cout << sizeof(Deal) << endl;
}
Большое спасибо!!
1 ответ
Решение
Мне нужен размер 112 байт. (14*8=112 байт).
гарантированно будет иметь не менее 32 бита, что составляет 4 байта (при условии 8-битного байта); не 8 байт.
Если вы хотите, чтобы каждое целое число было 64-битным, вы можете использовать
std::int64_t
вместо того
long
.
никогда не увеличивает размер класса. Он только уменьшает размер, удаляя отступы, которые в противном случае необходимы для выравнивания.
PS
#pragma pack
не существует в стандартном C++ (фактически, в C ++ нет стандартных прагм). Это расширение языка.