Error 2374 for loop-scoped variable declaration

Question:
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?

Answer:
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:
Share on facebook
Share on twitter
Share on linkedin

Overview

Recent Articles: