我正在尝试用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...
}
如果您有任何想法,我将不胜感激。
答案 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;
}
}