title: C/C++: How to use the do-while(0); construct without compiler warnings like C4127?
body: <p>I'm often use do-while(0) construct in my #defines, for the reasons described <a href="https://stackoverflow.com/questions/154136/why-are-there-sometimes-meaningless-do-while-and-if-else-statements-in-c-c-macr/154138#154138">in this answer</a>. Also I'm trying to use as high as possible warning level from compiler to catch more potential problem and make my code more robust and cross-platform. So I'm typically using <code>-Wall</code> with gcc and <code>/Wall</code> with MSVC.</p>
  
  <p>Unfortunately MSVC complain about do-while(0) construct:</p>
  
  <pre><code>foo.c(36) : warning C4127: conditional expression is constant
  </code></pre>
  
  <p>What should I do about this warning? </p>
  
  <p>Just disable it globally for all files? It does not seems to be good idea for me.</p>