Не сработает.В 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;
}