История изменений
Исправление alysnix, (текущая версия) :
#define GREATGRANDPA_VAR_PAR (*p)->prev->prev->prev
#define GRANDPA_VAR_PAR (*p)->prev->prev
#define RIGHT_UNCLE_VAR_PAR (*p)->prev->prev->right
#define LEFT_UNCLE_VAR_PAR (*p)->prev->prev->left
#define RIGHT_UNCLE p->prev->prev->right
#define LEFT_UNCLE p->prev->prev->left
#define DAD_VAR_PAR (*p)->prev
#define DAD p->prev
#define RIGHT_BRO_VAR_PAR (*p)->prev->right
#define LEFT_BRO_VAR_PAR (*p)->prev->left
#define RIGHT_BRO p->prev->right
#define LEFT_BRO p->prev->left
#define LEFT_SON_VAR_PAR (*p)->left
в этих декларациях у тебя используется то p, то (*p)… стоит подставить такую макру в неверном контексте, как будут бага.
все такие макры надо писать с явным параметром, и правильно подставлять его при использовании:
#define GREATGRANDPA_VAR_PAR(ptr) (*ptr)->prev->prev->prev
Исходная версия alysnix, :
#define GREATGRANDPA_VAR_PAR (*p)->prev->prev->prev
#define GRANDPA_VAR_PAR (*p)->prev->prev
#define RIGHT_UNCLE_VAR_PAR (*p)->prev->prev->right
#define LEFT_UNCLE_VAR_PAR (*p)->prev->prev->left
#define RIGHT_UNCLE p->prev->prev->right
#define LEFT_UNCLE p->prev->prev->left
#define DAD_VAR_PAR (*p)->prev
#define DAD p->prev
#define RIGHT_BRO_VAR_PAR (*p)->prev->right
#define LEFT_BRO_VAR_PAR (*p)->prev->left
#define RIGHT_BRO p->prev->right
#define LEFT_BRO p->prev->left
#define LEFT_SON_VAR_PAR (*p)->left
в этих декларациях у тебя используется то p, то (*p)… стоит подставить такую макру в неверном контексте, как будут бага.
все такие макры надо писать с явным параметром, и правильно подставлять его при использовании: #define GREATGRANDPA_VAR_PAR(ptr) (*ptr)->prev->prev->prev