我有以下结构
typedef struct
{
char data1[10];
char data2[10];
AnotherStruct stData;
}MyData;
由于某种原因,实现者选择不将 stData 作为指针,所以我不得不忍受。 我的问题是如何检查 stData 成员是否为空?因为如果它是空的,我需要跳过代码中的某些内容。
感谢任何帮助
最佳答案
您需要一些方法将 AnotherStruct stData
标记为空。
首先检查(或复查)与
AnotherStruct
相关的文档和注释,可能会询问制作它的人是否可用,以了解是否有官方方法做你想做的。也许那个struct有一个指针,如果是空指针,这个struct就是空的。或者也许有一个整数字段,其中 0 或 -1 或其他东西可能意味着空。甚至是一个 bool 字段来标记它为空。
如果以上都没有,也许你可以添加这样一个字段,或者对某个字段进行这样的解释。
如果上述失败,在
MyData
中添加一个 bool 字段来判断stData
是否为空。您还可以解释
data1
和/或data2
的一些值(例如,空字符串?充满 0xFF 字节?)表示空stData
.如果你不能修改或重新解释任一结构的内容,那么你可以将空和非空项目放在不同的容器中(数组、列表,无论你有什么)。如果
MyData
项是从堆中一一分配的,那么这本质上与 a free list 相同。 .上面的变化,如果你有空和非空项目都混合在一个容器中,那么你可以有另一个容器与 指针 或非空项目的索引(或空元素,或任何适合您需要的东西)。这有一个额外的复杂性,您需要使两个容器保持同步,这可能是微不足道的,也可能不是微不足道的。
关于c++ - 如何在 C 或 C++ 中检查结构是否为 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25904993/