我正在使用一个包含许多成员的大型结构,我想要一种简单的方法来快速查看是否有任何成员非零。我知道memcmp()
不应该用它来比较两个结构的相等性(如此处所述:如何比较结构在 C 中的相等性?),但我希望通过将结构与已设置为 0 的内存块进行比较,这可能有效。
例如,假设我有一些结构:
typedef struct {
int Int1;
int Int2;
int Int3;
} MyInts;
我从这个结构创建一个变量:
MyInts MyStruct = {0};
在我的程序执行过程中,成员MyStruct
通常为 0,但有时可能会临时设置为某个非零值。我想快速检查其中的任何整数MyStruct
是否非零。我可以memcmp()
像下面这样使用吗?
// Create empty struct to test against
MyInts EmptyStruct = {0};
// Make sure entire memory block of test struct is cleared
memset(&EmptyStruct, 0, sizeof(MyInts));
// Compare MyStruct to EmptyStruct to see if any non-zero members exist
int result = memcmp(&MyStruct, &EmptyStruct, sizeof(MyInts));