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 

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.


Share the Post: