计算几个项目的值

时间:2011-07-28 21:53:29

标签: c function

我正在尝试用C记录进程,我需要一个更简单的解决方案。

我有一个状态字节,每个位指示某些设备是否打开。每台设备都有固定的功耗率,我想根据其开/关状态记录用电量。

所以,我有一个名为equip_totals的结构,使用率为members,equip1 ......

struct {
        unsigned int equip1;
        unsigned int equip2;
        ...
        } equip_totals; 

并且要更新,我使用了一个相当长的函数,我想简化

void update_equip_status(char *equip_status)
{
if (&equip_staus = 0x01)
equip_totals.equip1 = consumption_rate*time;
if...
}

如果您有任何想法,我将不胜感激。

2 个答案:

答案 0 :(得分:2)

使用一个简单的数组:unsigned int equip_totals[8];

另外,最好只按值传递equip_status

for(int i=0; equip_status != 0; i++, equip_status /= 2)
   if (equip_status & 1)
      equip_totals[i] = consumption_rate*time;

答案 1 :(得分:1)

用数组替换equip_totals并使用以下循环

void update_equip_status(char *equip_status) {
    for ( int i = 0; equip_status; i++ ) {
        if ( equip_status & 1 )
            equip_totals[i] = consumption_rate*time;
        equip_status >>= 1;
    }
}