在gcc中有样一个定义: typedef struct _CRTPPacket { uint8_t size; union { struct { union { uint8_t header; struct { uint8_t channel : 2; uint8_t reserved : 2; uint8_t port : 4; }; }; uint8_t data[CRTP_MAX_DATA_SIZE]; }; uint8_t raw[CRTP_MAX_DATA_SIZE+1]; }; } __attribute__((packed)) CRTPPacket; 定义好后,使用时只需要用 CRTPPacket mm; mm.port =2; mm.reserved = 3 但在mdk中就不行 struct ,union 必须实名化,这要就要写一大串了 请问在MDK中有没有简单的方法实现功能 |
否则你试试下面的这种定义方式吧:
一般中间函数可以使用中间的一些结构体或者联合体,这样模块化更强一些。
#pragma anon_unions
typedef union
{
struct
{
s8 cIValue;
s8 cQValue;
} IQ;
s8 cValues[2];
u8 bValues[2];
u16 uIQValue;
} __attribute__ ((aligned(1))) IQValue_t;