计算结构体大小

来源:互联网 发布:马拉多纳 数据 编辑:程序博客网 时间:2024/04/30 06:37
#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;
}
原创粉丝点击