do,whileマクロ
例えば、NULLチェックと解放&NULL代入をするマクロを作るときに、
#define SAFE_DELETE(p) \ if( p != NULL ){ \ delete p; \ p = NULL; \ }
こうやって書くんですけど、これだとSAFE_DELETE(p)と書いたときに、最後のセミコロンが無かったとしても、コンパイルが通ってしまいます。
これは、次のようにdo,whileを使うことによって解決することが出来ます。
#define SAFE_DELETE(p) \ do{ \ if( p != NULL ){ \ delete p; \ p = NULL; \ } \ }while( FALSE )
……まあ、これが出来たところで、それがどうしたと言われたらそれまでなんですが(;´Д`)