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;

したがって、基本的には、OrderReqXmlがnullかどうかを確認する必要があります。

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 に答える