| www.delorie.com/archives/browse.cgi | search |
| From: | Rodeo Red <rodeored AT netstep DOT net> |
| Newsgroups: | comp.os.msdos.djgpp |
| Subject: | Re: "for" messages |
| Date: | Mon, 22 Nov 1999 22:56:30 -0500 |
| Organization: | Church of Evangelical Environmental Extremism |
| Lines: | 77 |
| Message-ID: | <055AF6C058B39CA5.AE73F39F516148F5.649AD2B8ADF2213B@lp.airnews.net> |
| X-Orig-Message-ID: | <383A106C DOT C957E74D AT netstep DOT net> |
| References: | <F0458523BAB82511 DOT F75DE6F80A0A31D6 DOT 8D4647641CEFD2ED AT lp DOT airnews DOT net> <3839D8B8 DOT F0E10FB AT efd DOT lth DOT se> <31D677D3D5976EA1 DOT 2282C56AE95402D6 DOT 16BA81A6C65620CB AT lp DOT airnews DOT net> <3839FE04 DOT 9F9FEDF8 AT a DOT crl DOT com> |
| Abuse-Reports-To: | support at netstep.net to report improper postings |
| NNTP-Proxy-Relay: | library1.airnews.net |
| NNTP-Posting-Time: | Mon Nov 22 21:54:57 1999 |
| NNTP-Posting-Host: | !b?L"-@[06`4cRN (Encoded at Airnews!) |
| Mime-Version: | 1.0 |
| X-Mailer: | Mozilla 4.7 [en] (Win98; I) |
| X-Accept-Language: | en |
| To: | djgpp AT delorie DOT com |
| DJ-Gateway: | from newsgroup comp.os.msdos.djgpp |
| Reply-To: | djgpp AT delorie DOT com |
Weiqi Gao wrote:
> The code in your file used to be legal C++ code, but the final ANSI C++
> standard made it illegal.
>
By "illegal" you mean the program won't compile ? Then these are error messages and
not just warnings ? (How does one ultimately tell ?)
>
> The thing to note here is that the scope of a variable declared in the
> head of a loop is the rest of the head and inside of the braces:
>
> for (/* declare variable here */; /* use it here */ ; /* use it here
> */) {
> /* use it here */
> }
> /* can't use it here */
according to what your saying I should add braces to lines 20 and 26- {}
for example change:
line 19 for (i = 0; i < 5; i++)
line 20 cout << "num[" << i <<"] == " << num[i] << '\n';
to
line 19 for (i = 0; i < 5; i++)
line 20 {
cout << "num[" << i <<"] == " << num[i] << '\n';
}
{
/* Then I'm using it here */
}
So I tried that and I got the same messages:
testfile.cpp: In function `int main(...)':
testfile.cpp:25: name lookup of `i' changed for new ANSI `for' scoping
testfile.cpp:19: using obsolete binding at `i'
Line 25 is: for (i = 0; i < 5; i++)
Line 19 is: for (int i = 0; i < 5; i++)
which is not suprizing because I added braces to lines 26 and 20, but the errors
are in lines 25 and 19.
>
>
> Your second for() loop is trying to use the 'i' declared in the head
> of the first for() loop, which by the time you reached the second for()
> loop has gone out of scope already.
>
I thought that shouldnt matter because the i is also declared in the second loop.
>
> The error messages you received from the compiler is an attempt by the
> gcc authors to help users who know the old rule (which says you CAN use
> the variable). Had they been less considerate, you would have received
> this error message:
>
> testfile.cpp:25: 'i' undeclared (first use in this function)
OK so they ARE error messages. That makes sense but I still don't understand what
the fix is.
Thanks for that clarification anyway. Onward through the fog !
Red
--
"Space travel is utter bilge!" -Sir Richard Van Der Riet Wolley
| webmaster | delorie software privacy |
| Copyright © 2019 by DJ Delorie | Updated Jul 2019 |