簡體   English   中英

填充陣列狀結構

[英]Padding of array-like structs

給定一個包含相同基本類型序列的結構,如下所示:

struct Vector
{
    float x;
    float y;
    float z;
};

會員之間可以填充嗎? 我得到了[class.mem]的鏈接,說明可以添加填充以實現對齊,但在這種情況下它是否適用?

似乎沒有技術原因,結構中的浮點數與數組中的浮點數不同。 但仍然缺乏二進制級別的C ++標准化

如果您想要安全,那么您可以添加static_assert

static_assert(offsetof(Vector, y) - offsetof(Vector, x) == sizeof(float));
static_assert(offsetof(Vector, z) - offsetof(Vector, y) == sizeof(float));

此外,您還可以使用非跨平台方式禁用填充。 對於Visual Studio,您需要#pragma pack ,對於gcc,您需要使用packed的屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM