PRB: Variable Scope in for-statement Extends Beyond Loop

Article translations Article translations
Article ID: 167748
This article has been archived. It is offered "as is" and will no longer be updated.
Expand all | Collapse all

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++)
   ;
 }
				

Properties

Article ID: 167748 - Last Review: January 9, 2015 - Revision: 2.0
Keywords: 
kbnosurvey kbarchive kblangcpp kbprb KB167748

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com