マクロを展開する際に
単純に{ }でくくるのではなくて以下のように
do{ }while(0)
でくくっているのがありますが
どういう意図ですか?
do {
} while (0);