一种用指针简化添加数据的方法

本文描述了一种通过指针偏移技术简化在IT系统中向数据结构添加数据的方法,避免了冗余,提高了代码清晰度。作者对比了旧方法与新方法在处理节点_yx和节点_yc数据时的效率和可读性。
摘要由CSDN通过智能技术生成

一种用指针简化添加数据的方法

for (u8 id=0; id<P_DEV_NUM;id++)//添加4个间隔YX和YC数据
  {
    for (u8 sw=0; sw<AP_SW_NUM;sw++)
    { 
      
      data[id][sw][0]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Fault);
      data[id][sw][1]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.SwJuDong);  
      data[id][sw][2]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Urec); 
      data[id][sw][3]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.isolation_suc);
      data[id][sw][4]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.excision_suc);
      data[id][sw][5]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Loopban);
      data[id][sw][6]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Protect);
      data[id][sw][7]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.branch_exc_suc);
      data[id][sw][8]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.pow_fa_end);
      data[id][sw][9]  = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Loop_hz_suc);
      data[id][sw][10] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Loop_hz_fail);
      data[id][sw][11] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Reserve1);
      data[id][sw][12] = MmsValue_newBoolean(goose_info.send[id][sw].node_yx.Reserve2);
      
      data[id][sw][13] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.load_value);
      data[id][sw][14] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.lock_value);
      data[id][sw][15] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.revert_value);
      data[id][sw][16] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.udid_offside);
      data[id][sw][17] = MmsValue_newIntegerFromInt32(goose_info.send[id][sw].node_yc.Reserve3);
      
      for(int datasize = 0 ; datasize < DATASIZE;datasize++)
      {
        LinkedList_add(dataSetValues, (data[id][sw][datasize]));
      }
    }
  }

优点:清晰。
缺点:冗余。

简化方法—指针
通过指针偏移的方式巧妙解决了冗余问题

//添加18个间隔数据

void AddGooseData(LinkedList dataSetValues) 
{
    for (u8 id = 0; id < K_UINT_NUM;id++)
    { 
        for (int i = 0; i < 13; i++) 
        {
            g_Goosedata[id][i]  = MmsValue_newBoolean(*(((bool*)&goose_info.send[id].node_yx)+i));
        } 
        for (int i = 0; i < 5; i++) 
        {
            g_Goosedata[id][i + 13] = MmsValue_newUnsignedFromUint32(*(((u32*)&goose_info.send[id].node_yc) + i));
        }
        for(int datasize = 0 ; datasize < INTERVAL_NUM;datasize++)
        {
            LinkedList_add(dataSetValues, g_Goosedata[id][datasize]);
        }
    }
}
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值