C++宏的黑科技用法《结构体字节序自动转换》

背景

慢慢的自己管理项目已经一年了,这也是我管理的第一个项目,期间触及了挺多的知识盲区,开始慢慢的摸索,慢慢的熟悉,将压力转化为了动力。我在这里想总结下作为新人的我在这一年里收获了什么。

开始优化

可能源于自己管理项目,我开始放飞自我,但凡自己感觉看不顺眼的地方就改改改(还好没改出什么大问题出来)。开始每优化一个代码我都会反复去测,生怕出问题。通过不同的写法来简化代码,期间用的最多的应该是宏吧!这套代码最基础的框架年代稍微也有些久远,写的人越来越多,花里胡哨的,抄代码的啥都有,经常给人一直繁琐冗乱的感觉,特别是抄代码的时候,会出现大量类似代码,为了方便其他项目人员编写,提高效率,我做了挺多封装,特别是使用宏跟lambda,不过也是源于C++11后,之前很多没法优化的东西现在都可以搞了。这些都是题外话,进入主题吧!

为何需要自动转换?

为何要自己搞自动转换?用Protobuf不香吗?这东西确实好,毕竟Google出品,必属精品。但我没选,毕竟还是想兼容下当前项目(后期做Protobuf扩展),目前项目使用socket通信,与前端通信时使用网络字节序跟本地字节序转换,现状是需要对每个字段单独本地字节序解析的方式接收!!!然而接收时任然是要对包体总大小做检测的。所以我想以最简单的方式实现,毕竟当前服务端socket协议传输数据量不大,几大基础类型就能胜任,于是有了现在这东西,目前这个虽然大体能支持我服务端的要求但是还是有不足,扩展性不好,但用起来简单。
希望有更好解决办法的小伙伴给我指点下。

/*
 * Author		: Guojie Zhang
 * Email        :2453667260@qq.com
 * Description	: 用于结构体字节序解析	  
 *				  能解析的最大参数受此处定义的宏所限制(暂时没有想到更好的解决办法)
 */

#ifndef _PROTOCOL_BODY_H
#define _PROTOCOL_BODY_H

#include "Common.h"

#define TOH(t) Protocol::NTOH(t)
#define TON(t) Protocol::HTON(t)

#pragma pack(push)
#pragma pack(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值