I was planning on writing a couple of entries on C macros, including assert macros and why you should wrap your macros in do/while loops. While doing a bit of research I came across a couple of excellent blog posts by Charles Nicholson on these very topics. Rather than try and out do him, I’ll just refer you to him!
Building a Better Assert Macro
http://cnicholson.net/2009/02/stupid-c-tricks-adventures-in-assert/
Why You Should Be Wrapping Your Macros in Do/While Loops
http://cnicholson.net/2009/03/stupid-c-tricks-dowhile0-and-c4127/