PRB: Variable Scope in for-statement Extends Beyond Loop

ID: Q167748


The information in this article applies to:
  • The C/C++ Compiler (CL.EXE), included with:
    • Microsoft Visual C++, 32-bit Editions, version 5.0, 6.0


SYMPTOMS

If you declare the same variable in two different for-statements, the following error may appear:

Test.cpp(4) : error C2374: 'i' : redefinition; multiple initialization


CAUSE

The scope of a variable declared in the initialization part of a "for" loop is given local scope, as if it had been declared immediately prior to the for-statement.


RESOLUTION

Compile with /Za, Disable Language Extensions. To select this option in Developer Studio, select Project, Settings, and then click the C/C++ Tab. Change the Category to Customize and select Disable Language Extensions.

If you cannot use the /Za option, you can work around the problem by #defining the "for" keyword as follows:


#define for if(0);else for 


MORE INFORMATION


/* Compile Options Needed to compile without error: /Za */ 

 /* test.cpp */ 
 void main()  {
for (int i=0; i<10; i++)
   ;
for (int i=0; i<15; i++)
   ;
 } 

Additional query words:

Keywords : kbLangCPP kbVC500 kbVC600
Version : winnt:5.0, 6.0
Platform : winnt
Issue type : kbprb


Last Reviewed: August 25, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.