プリプロセッサマクロ内で複数のステートメントを実行する必要がある場合、通常は次のように記述されます。
#define X(a) do { f1(a); f2(a); } while(0)
したがって、このマクロが次のような式の中で使用される場合:
if (...)
X(a);
それは台無しにされないでしょう。
問題は、私がそのような表現を見たところはどこでも、それは常にdo { ... } while(0);
です。(私の意見ではより明確な)そのような概念を好む理由はありますif (1) { ... }
か?それとも私は私の観察で間違っていて、それらは等しく人気がありますか?