计算结构体大小

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define UINT32 unsigned int
#define UINT16 unsigned short
#define UINT8  unsigned char
#define BOOL   unsigned char

//字节类型枚举
enum Type
{
CHAR = 0, // 1字节
SHORT, // 2字节
INT, // 4字节
DOUBLE, // 8字节
};


//结构体开始
void StartStruct()
{

}


//添加类型
UINT32 AddType(enum Type type)
{

}


//添加数组
UINT32 AddArray(enum Type type, UINT32 num)
{

}


//结构体嵌套开始
void BeginNestStruct()
{

}


//结构体嵌套结束
void EndNestStruct()
{

}


//结构体结束,返回结构体大小
UINT32 FinishStruct(UINT32 *size)
{

}


struct A
{
UINT8 a;
UINT32 b;
UINT16 c;
UINT32 d[3];
};


struct B
{
double a;
UINT8 b;
A d;
UINT16 c;
};


struct C
{
UINT8 a;
UINT16 b;
B c;
};


int main()
{
UINT32 size = 0;

StartStruct();
AddType(CHAR);
AddType(SHORT);
BeginNestStruct();
AddType(DOUBLE);
AddType(CHAR);
BeginNestStruct();
AddType(CHAR);
AddType(INT);
AddType(SHORT);
AddArray(INT,3);
EndNestStruct();
AddType(SHORT);
EndNestStruct();
FinishStruct(&size);
(size == sizeof(struct C)) ? printf("OK!!!!!!!!!\n") : printf("result must be %d\n",sizeof(struct C));

return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值