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