如何检测 C 中结构字段的值是否已更改?

分享于2022年09月08日 c function if-statement pointers struct 问答
【问题标题】:how to detect if the value of a struct field has changed in C?如何检测 C 中结构字段的值是否已更改?
【发布时间】:2022-08-01 23:24:33
【问题描述】:

所以可以说我有一个更新结构字段的函数:

struct person {
    int age;
};

void update_struct (int value) {
    person->age = value;
}

我想检测结构字段的值是否在另一个函数中发生了变化。

void another_function () {
    
    if (there is a change in the value of the struct field 'age') {
        // do the following;
    }

}

我正在努力为此编写一个 if 语句条件。帮助将不胜感激。

  • 跟踪您知道的最后一个值,并将其与实际值进行比较。如果它们不同,则一个已经改变。之后相应地更新您的期望值
  • 存储 struct 的最后一个状态,然后你可以在调用一个可能改变 struct 值的函数后将其与 struct 的值进行比较。

【解决方案1】:

您不能直接执行此操作,要么保留在更改字段时修改的标志,要么保留结构的副本和 memcmp 它。

后一种解决方案会浪费更多内存,但它的优点是它是盲目工作的,除非您的 struct 中有指针。

【讨论】: