devxlogo

Fix MSVC++’s “for”

Fix MSVC++’s “for”

MSVC has a small, but annoying bug with the scope of variables defined in “for” loops. For example, the following fragment is valid C++, but will not compile on MSVC:

 for(int i=0; I

size=3>
MSVC will complain about the second for loop, because the variable "i" is defined as if it were scoped just outside of the first "for" loop.
What follows is a quick one liner to put at the top of your file, (or even better, in your MSVC-specific header files, since everyone is, of course, targeting multiple platforms and compilers):

 #define for if(false) {} else for

size=3>
With this code, "for" loops will have the semantics that they should, with one small exception: should you type/syntax err badly enough to have an "else" clause right after your "for" loop, the compiler will not catch the error. But I've never heard of this happening anyway.

devx-admin

Share the Post: