iOS 结构体的data[0]问题。

来源:互联网 发布:守望先锋半藏伤害数据 编辑:程序博客网 时间:2024/04/28 04:02

经常我们看到写linux程序的,喜欢定义这样的东西。

typedef struct RegHeader{    unsigned int    version;       //版本号    unsigned int    msg_id;        //命令ID    unsigned int    size;          //消息长度    unsigned char   data[0];       //消息体}RegistShareHeader;typedef struct RegMsg{    uint8_t     usr_no[32]; //ID    uint8_t     access_token[MAX_ACCESS_TOKEN_LEN];         uint8_t     ssid[MAX_DEV_ID_LEN];           uint8_t     pwd[MAX_PASSWD_LEN];        //密码    uint32_t    encrypt_type;           //加密类型0:NONE  1:WPA  2:WPA2 3:WEP    uint32_t    auth_mode;         //认证方式0:NONE  1:EAP 2:PSK 3:OPEN 4:SHARED    uint32_t    secret_key_type;     //密钥管理方式 0:NONE  1:AES 2:TKIP 只对应于加密类型为WPA/WPA2的情况}RegMsgBody;

第一个是消息头部,里面有个 uint8_t data[0]是不占空间的. size是它的长度, 你会发现结构体的大小为12。
把MsgBody的内容拷贝到data. header地址后面就紧跟着msgBody的内容。这种一般都用在变长的结构体定义中。iOS都是支持这种方式的结构体定义的。当然你也可以定义为一个指针。

1 0
原创粉丝点击