首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C中跟踪结构成员值的变化?

如何在C中跟踪结构成员值的变化?
EN

Stack Overflow用户
提问于 2011-05-12 09:08:47
回答 1查看 199关注 0票数 0
代码语言:javascript
运行
复制
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_arayi-1->cop和state_arayi-1->bit和state_arayi->bit来获取state_arayi->cop?

tks

EN

Stack Overflow用户

发布于 2011-05-12 09:23:35

行不通的。与OOP的" this“或"self”概念相反,C中没有“我是这个结构的成员”的机制。这就是为什么在C中,你只是简单地隐藏你的结构实现,并提供函数来改变你偷偷设置其他值的值。

代码语言:javascript
运行
复制
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;
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5972297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档