0

我填充了一个结构(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 是否为空。

4

1 回答 1

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() 分配的内存被初始化为零。)

于 2012-08-24T14:05:21.747 回答