#pragmatic pack() 用来设置字节对齐。
例如
#pragma pack(1)
typedef struct STU1
{
uint8_t param1
uint8_t buf1[7];
uint8_t param2;
uint16_t param3;
uint16_t param4;
uint16_t param5;
uint32_t param6;
uint8_t param7;
} STU1_T;
#pragma pack()
上面使用中,#pragma pack(1)和#pragma pack()中间的结构体就会按照1字节对齐,节省内存空间。
但是这种用法,如果代码变长,#pragma pack(1)和#pragma pack()包围的内容多了以后,容易造成后面#pragma pack()漏掉的情况,导致字节对齐影响范围不可控。
在资源不紧张的情况下,尽量不控制字节对齐。
如果一定要用 建议每个结构体单独控制,例如下面的
typedef struct STU1
{
uint8_t param1
uint8_t buf1[7];
uint8_t param2;
uint16_t param3;
uint16_t param4;
uint16_t param5;
uint32_t param6;
uint8_t param7;
} __attribute__((packed)) STU1_T;