2 つの連結リストの実装 ( queue.h [ source ] とutlist.h [ source ]) を検討していますが、それぞれの実装に関していくつか質問があります。
_Q_INVALIDATE
queue.hとは何ですか? デバッグの一部だと思いますが、マクロdefine
ロジックがよくわかりません。- 両方の実装で と が提供され
FOREACH
ますFOREACH_SAFE
。前者は単純明快ですが、後者の背後にあるロジックは何ですか? また、前者がとにかく安全でない場合、そもそもなぜそれが実装されたのですか? - と(と)
queue.h
の型が異なる構造体を実装したのはなぜですか?next
prev
struct *le_next
struct **le_prev
- 両方の実装で、あちこちに余分な括弧が挿入されているのはなぜですか? 例えば。周り
head
に#define LIST_FIRST(head) ((head)->lh_first)