この回答 で説明されている理由により、#defines で do-while(0) コンストラクトを使用することがよくあります。また、コンパイラからの可能な限り高い警告レベルを使用して、より潜在的な問題をキャッチし、コードをより堅牢でクロスプラットフォームにしようとしています。したがって、私は通常-Wall
、gcc と/Wall
MSVC を使用しています。
残念ながら、MSVC は do-while(0) コンストラクトについて不平を言っています。
foo.c(36) : warning C4127: conditional expression is constant
この警告についてどうすればよいですか?
すべてのファイルに対してグローバルに無効にするだけですか? それは私にとって良い考えではないようです。