Egyébként miért szokás a do ... while(0) makróban? Valami sima ({ }) nem lenne megoldás? Persze lehet, le sem fordul. Másik, amit sohasem próbáltam ki, hogy vajon a p->member helyett működne-e a (*p).member alak.