查找结构的打包大小

时间:2014-05-07 07:25:29

标签: c gcc sizeof packed

有没有办法在GCC编译器中找到没有打包属性定义和声明的结构的打包大小?

示例:

struct Name
{
   int a;
   char ch;
}

get_packed_size(Name)之类的任何函数或宏都应返回5

2 个答案:

答案 0 :(得分:2)

使用提供所需信息的宏来定义结构。例如(尽管还有其他可能的实现):

#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));
}

答案 1 :(得分:0)

不,没有办法......你只有sizeof(),你需要照顾填充......