#define FREE(p) { free(p); (p) = 0; } と
#define FREE(p) do { free(p); (p) = 0; } while(0)
の二つの書き方を見るんですが、どっちの方がいいとかありますか?