我需要创建一个具有特定大小的内存访问优化 struct .在正常情况下,"保留"字段用于将 struct 填充为特定大小.我正在寻找一种方法来定义一个匿名 struct ,这样我就可以使用它的大小来填充保留字段,这样我就不必不断更新保留填充大小.
实现这一点的一种方法是
typedef struct _xferStructure_t
{
struct anonymous
{
uint32_t field1;
uint32_t field2;
uint32_t field3;
} _;
uint8_t reserved[1024 - sizeof(struct anonymous)];
} xferStructure_t;
int main()
{
xferStructure_t xferData = { ._.field1 = 1, ._.field2 = 2, ._.field3 = 3 };
printf("Field 1 = %d", xferData._.field1);
printf("Reserved = %ld", sizeof(xferData.reserved));
return 0;
}
理想情况下,我希望访问匿名 struct 中的三个字段,而无需声明它.所以,像这样的东西
typedef struct _xferStructure_t
{
struct anonymous
{
uint32_t field1;
uint32_t field2;
uint32_t field3;
};
uint8_t reserved[1024 - sizeof(struct anonymous)];
} xferStructure_t;
int main()
{
xferStructure_t xferData = { .field1 = 1, .field2 = 2, .field3 = 3 };
printf("Field 1 = %d", xferData.field1);
printf("Reserved = %ld", sizeof(xferData.reserved));
return 0;
}
第二个实现不起作用,但有没有办法实现这个 struct ,而不必在xfer struct 中声明匿名对象?