Error 2374 for loop-scoped variable declaration

Error 2374 for loop-scoped variable declaration

The following code produces an error when compiled on Microsoft Visual C++ 6 SP3:

for (int i = 0; i < 10; i++)    cout << i << endl;int i = 2;

error C2374: 'i' : redefinition; multiple initialization

But it compiles cleanly on gcc. Why? Which interpretation of the language specification is correct?

GCC got it right. The new scoping rules of C++ restrict the scope of a variable declared in a for-loop to the loop itself, but not outside it. Visual C++ is not compliant in this respect yet. When the loop terminates, it doesn't destroy the variable i, and as a result, your second declaration of i clashes with one declared in the fo-loop.

See also  How to Avoid Money Transfer Scams  

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist