Login | Register   
Twitter
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX


Tip of the Day
Language: C++
Expertise: Beginner
May 30, 2000

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.

DevX Pro
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap