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<10; i++) { DoSomeThing();}for(int i=0; I<10; i++) { DoSomeThingElse();}
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
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.