检查结构是否为空

时间:2012-08-24 13:58:52

标签: c structure

我填充了一个结构(ORDER_EXPIRY_TP * OrderReqXml),现在我想检查结构是否包含任何值?这是我的代码:

OrderReqXml->fIntOrderNumbe =at_int_ord_req->fIntOrderNumber;

OrderReqXml->dLocationCode = 0;
OrderReqXml->dQzUser = at_int_ord_req->dUserId
OrderReqXml->dSuperUserId = 0;

所以基本上我想要2检查OrderReqXml是否为空。

1 个答案:

答案 0 :(得分:2)

真的取决于你想要达到的目标。

如果你像这样分配你的结构:

Order* OrderReqXml = malloc(...);

然后,在为结构赋值之前,确实应该检查指针是否为!= NULL。一个好方法是:

Order* OrderReqXml = malloc(...);
if (OrderReqXml != NULL) {
  // fill data
} else { /* error handling */ }

如果从其他地方获取指针,例如从内存中的静态结构,你想检查结构是否已填充,你需要检查单个结构元素:

bool structIsNotFilled(Order* o) {
  return ((o->fIntOrderNumber == 0) &&
          (o->dLocationCode == 0) &&
          (o->dQzUser == 0) &&
          (o->dSuperUserId == 0))
}

然而,问题是,如果你想在内存中信任这个结构用零来初始化。 (您不能相信将malloc()分配的内存初始化为零。)