do { bool ret = func(); if (!ret) { break; } // 省略 } while(false); なんだこれは。一瞬無限ループかと思ったが条件が false だから 一回もループせずに抜けてしまうじゃないか。何をしたいんだ と思ってググったら「breakで抜けることができる」=「gotoや例外を使わないで済む」ということらしい。 do { bool ret = func(); if (!ret) { break; } // ←func()がtrueのときのみ処理したい } while(false); // 以降はfunc()がtrue/false関係なしに処理