0

我正在尝试使用指令(#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;
}

非常感谢!!

4

1 回答 1

4

我需要它的大小为 112 字节。(14*8=112 字节)。

long仅保证至少为 32 位,即 4 字节(假设为 8 位字节);不是 8 个字节。

如果您希望每个整数为 64 位,则可以std::int64_t使用long.

#pragma pack永远不会增加班级的规模。它只会通过删除对齐所需的填充来减小大小。

PS#pragma pack在标准 C++ 中不存在(实际上,在 C++ 中不存在标准编译指示)。它是一种语言扩展。

于 2021-09-23T07:46:46.217 回答