有没有办法在 GCC 编译器中找到没有打包属性定义和声明的结构的打包大小?
例子:
struct Name
{
int a;
char ch;
}
任何函数或宏都get_packed_size(Name)
应该返回 5
使用提供所需信息的宏定义您的结构。例如(尽管还有其他可能的实现):
#define DEFINE_STRUCT_WITH_KNOWN_PACKED_SIZE(StructName, StructBody)\
struct StructName StructBody\
struct __attribute__ ((__packed__)) StructName##_packed StructBody
#define GET_PACKED_SIZE(StructName) sizeof (struct StructName##_packed)
DEFINE_STRUCT_WITH_KNOWN_PACKED_SIZE(Name, {
int a;
char ch;
};)
#include <stdio.h>
int main() {
printf("%lu", GET_PACKED_SIZE(Name));
}
不,没有办法......你只有sizeof()
,你需要照顾填充......