複数行のマクロを定義する際、do { … } while(0) で囲む主な理由はどれか。

呼び出し元でセミコロンを付けたif文などと一緒に使っても構文エ…が正しい。