qt的结构体中FUNC_POOL封装memcpy()

封装memcpy()

#define FUNC_POOL \
bool payload_cur_info(Net_Carrier *NetPak, uint32_t size = NET_CARRIER_PAYLOAD_MAX_SIZE)\
{\
    uint32_t self_size=sizeof (*this);\
    NetPak->_payload_size = sizeof(*this);\
    if(self_size<=size)\
    {\
        memcpy_s(NetPak->_payload,size,this,self_size);\
        return true;\
    }else{\
        return false;\
    }\
}\
uint32_t get_payload_size()\
{\
    return sizeof(*this);\
}

把数据存储为字符,存进字符流

//设置相机投影数据
struct topic_set_cam_projection_data
{
    uint16_t _node_id;
    TYPE_cam_projection_data CamProjectionData;//相机投影数据
 

    std::string ToString()
    {
    std::stringstream ss;
    ss << "_node_id:" << (int)_node_id << " ,";
    ss << CamProjectionData.ToString();
    return ss.str();
    }
   FUNC_POOL
};
       Net_Carrier NetPack;
        NetPack._msg_priorities = EMSG_PRIORITIY::GameNormal;
        NetPack._source_node = E_NNODE_MSG_CONVER;
        NetPack._target_node = E_NNODE_VISUAL;
        NetPack._time_stamp = time(0);
        NetPack._topic_id = E_TPC_SET_CAM_PROJECTION_DATA;
      
        topic_set_cam_projection_data sysSetting;
        sysSetting._node_id = id;
        sysSetting.CamProjectionData._enable = enable;
        sysSetting.CamProjectionData._top_clipping_angle = top;
        sysSetting.CamProjectionData._bottom_clipping_angle = bottom;
        sysSetting.CamProjectionData._left_clipping_angle = left;
        sysSetting.CamProjectionData._right_clipping_angle = right;
       
       	//把这个结构体数据拷贝到另一个结构体
        sysSetting.payload_cur_info(&NetPack);
       
        QByteArray SendData;
        int SendSize = 21+NetPack._payload_size;
        SendData.resize(SendSize);
        memcpy(SendData.data(),&NetPack,SendSize);
        SendUdpData(SendData,QHostAddress(ip),port,msgType);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值