【发布时间】:2021-11-26 09:19:16
【问题描述】:
我有一段旧代码,结构很大,如下所示:
typedef struct {
long test1;
char test2[10]
…
} teststruct;
这个结构被初始化如下:
memset(teststruct, 0, sizeof(teststruct0));
我不得以任何方式更改此代码。如何有效地检查结构是否为空,或者在memset()之后被修改?
【问题讨论】:
-
“空”是什么意思?它有成员变量,所以不能为空。您的意思是检查所有值是否仍设置为 0?
-
如果您在结构中设置了一些值,是否有一个布尔标志设置为 true?如果这不可能,
memcmp的结构是“空的”? -
“结构为空”是什么意思
-
您可以
memcmp使用相同大小的零数组。 -
为什么是
memset?顺便说一句,teststruct不是一个实例。这是一个 type 所以memset(teststruct, 0, sizeof(teststruct));是完全错误的。