Lets assume I have a structure:
struct A {
uint16_t a;
uint64_t b;
};
有没有一种方法可以获取A的大小,但不包括填充?即:所有成员的sizeof之和(即使它不是递归的)。
通常情况下,
sizeof(A) == 16
。我想要__GCC_sizeof__(A) == 10
。我希望在测试代码中实现它,而不影响实际代码,这意味着结构定义中不需要
"#pragma"
和"__attribute__"
。(虽然可以使用#ifdef TEST
来完成,但非常丑陋)。它不必具有可移植性,
GCC
就足够了。谢谢!
__GCC_sizeof__(&A::a)
的值是多少?指向成员的指针可能会有一些填充,但你不能对其进行操作。 - MSalters