我填充了一个结构(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是否为空。
答案 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()分配的内存初始化为零。)