换个花样玩C++(2)柔性数组怎么玩

  如果你涉足网络传输方向的开发,我想你对这段类似的代码应该不会很陌生,先看代码:

int check_msg(svr_proto_t* pkg, uint32_t bodylen, fdsession_t* fdsess)
{
	struct report_msg {
		uint32_t			gameid;
		uint32_t			userid;
		uint32_t			recvid;
		uint32_t			onlineid;
		uint32_t			maptype;
		uint32_t			mapid;
		uint32_t			timestamp;
		uint32_t			msglen;
		char				msg[];	
	}__attribute__((packed));
	

	if (bodylen <= sizeof(report_msg)) {
		KERROR_LOG(pkg->id, "invalid len\t[%u]", bodylen);
		return 0;
	}

	report_msg* pmsg = (report_msg *)pkg->body;
	if (pmsg->msglen + sizeof(report_msg) != bodylen) {
		KERROR_LOG(pkg->id, "invalid len\t[%u %u]", bodylen, pmsg->msglen);
		return 0;
	} 
	//TODO other logic

	return 0;
}

这里你会看到有report_msg 这个结构体,他的msg成员是一个数组,数组长度是0,当然你也可以写成 c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值