On Mon, 10 Feb 2025 09:48:50 +0800 Bingbin Chen <chen.bing...@zte.com.cn> wrote:
> + > +#define ZXDH_INIT_D_NODE(ptr, pdata) \ > + do {\ > + ZXDH_D_NODE *temp_ptr = ptr;\ > + (temp_ptr)->data = pdata;\ > + (temp_ptr)->prev = NULL;\ > + (temp_ptr)->next = NULL;\ > + } while (0) > + > +#define ZXDH_INIT_RBT_TN(p_tn, p_newkey) \ > + do {\ > + ZXDH_RB_TN *p_temp_tn = p_tn;\ > + (p_temp_tn)->p_key = p_newkey; \ > + (p_temp_tn)->color_lsv = 0; \ > + (p_temp_tn)->p_left = NULL; \ > + (p_temp_tn)->p_right = NULL; \ > + (p_temp_tn)->p_parent = NULL; \ > + ZXDH_INIT_D_NODE(&((p_temp_tn)->tn_ln), (p_temp_tn));\ > + } while (0) > + > +#define ZXDH_GET_TN_LSV(p_tn) \ > + ((p_tn)->color_lsv >> 2) > + > +#define ZXDH_SET_TN_LSV(p_tn, list_val) \ > + do {\ > + ZXDH_RB_TN *p_temp_tn = p_tn;\ > + (p_temp_tn)->color_lsv &= 0x3;\ > + (p_temp_tn)->color_lsv |= ((list_val) << 2); \ > + } while (0) > + > +#define ZXDH_SET_TN_COLOR(p_tn, color) \ > + do {\ > + ZXDH_RB_TN *p_temp_tn = p_tn;\ > + (p_temp_tn)->color_lsv &= 0xfffffffc;\ > + (p_temp_tn)->color_lsv |= ((color) & 0x3);\ > + } while (0) > + Prefer using inline functions instead of macros. That way you get type safety and everything is more readable.