如何跟踪C中的结构成员值更改?

问题描述:

struct STATE{ 
    uint8 bit; 
    uint8 cop; 
} 
STATE *state_array[1024]; 

state_aray[0]->bit = 8;  
state_aray[0].cop = 8; 
state_aray[1]->bit = 0;  
state_aray[1].cop = state_aray[1]->bit & 8 != state_aray[0]->bit & 8 
state_aray[2]->bit = 12; 
state_aray[2].cop = state_aray[1]->bit & 8 != state_aray[0]->bit & 8 && state_aray[2]->bit & 8 != state_aray[1]->bit & 8 
state_aray[3]->bit = 0;  
state_aray[3].cop = state_aray[1]->bit & 8 != state_aray[0]->bit & 8 && state_aray[2]->bit & 8 != state_aray[1]->bit & 8 && state_aray[3]->bit & 8 != state_aray[2]->bit & 8 
state_aray[4]->bit = 8;  
state_aray[4].cop = ... 

state_aray[5].cop = ... ... 
... 
state_aray[100].cop = ... ...... ......... ....... ......... ....... ...... ....... ............... ........ ...... ............ .... ......... ...... .. 


 

是有没有办法只使用state_aray [I-1] - >警察和state_aray [I-1] - >位和state_aray [I] - >位获得state_aray [I] - >警察?如何跟踪C中的结构成员值更改?

tks

+3

请重新表述您的问题。我不知道你在做什么。 – 2011-05-12 01:11:30

+2

回滚最后一次编辑。如果有多个答案,问题不能被删除。参见[这里](http://meta.stackexchange.com/questions/5221/what-c​​an-cause-a-post-to-be-deleted-and-what-does-that-actually-mean/5222#5222 )。 – 2011-05-12 02:28:21

+0

,如果你的问题可以删除,有刚下标签框“C”“删除”链接。我不确定这些规则是否发生了变化,如果有答案,或答案是赞成票,那么问题就不能被删除。您也可以考虑标记版主,并要求他们为您删除。如果问题不能被删除,最好让它可见,可能更好地解释你想要做什么。 – 2011-05-12 02:35:33

不起作用。有没有“我是这个结构中的一员,”在C机制,而不是面向对象的“本”或“自我”的概念。 这就是为什么在c您只需隐藏你的结构实现和提供的功能来改变你悄悄设置其他值的值。

STATE *create_state(void) 
{ 
    STATE *retval; 

    if((retval = malloc(sizeof(STATE))) == NULL) 
     return NULL; 
    retval->cop = -1; 
    retval->bit = 0; 
    return retval; 
} 

void set_state(STATE *st, int val) 
{ 
    st->bit = val; 
    st->cop++; 
} 

int has_state_changed(STATE *st) 
{ 
    return st->cop; 
}