c99 mode
Hi I have a question: what is c99 mode?
I was using the Dev C++ compiler and got this error message:
'for' loop initial declaration used outside C99 mode
Thanks again.......
I believe it is complaining because
Edit: Removed my speculation about C99 since people who knew the answer said it was wrong. I also altered the code slightly based on a quick test which seems to indicate that the compiler only complains if you try to use a variable declared in the for() line outside of that loop.
[Edited by - mumpo on June 16, 2005 7:03:40 PM]
// you aren't supposed to do this anymore:for(int x = 0; x < 35; x++){ // do something}for(x = 0; x < 35; x++){ // do something else}// instead, do this:int x; // define it here because otherwise it is undefined when you reach the second loopfor(x = 0; x < 35; x++){ // do something}for(x = 0; x < 35; x++){ // do something else}
Edit: Removed my speculation about C99 since people who knew the answer said it was wrong. I also altered the code slightly based on a quick test which seems to indicate that the compiler only complains if you try to use a variable declared in the for() line outside of that loop.
[Edited by - mumpo on June 16, 2005 7:03:40 PM]
Quote:Original post by shishio
what is c99 mode?
C99 is the latest C standard (not C++), Dev-C++ uses mingw compiler a GCC compiler which supports some of the C99 standard aswell as the C++ standard but also supports its own language extensions, when in "C99 mode" it means strict conformance to C99 standard no GCC extensions allowed.
Quote:Original post by mumpo
I believe it is complaining because// you aren't supposed to do this anymore:for(int x = 0; x < 35; x++){ // do something}// instead, do this:int x;for(x = 0; x < 35; x++){ // do something}
C99 mode most likely refers to a mode in which the compiler is using the 1999 C++ standard, which allowed you to do it the first way (though I believe it still gave you a warning). The current version of the C++ standard appears to be 2005, which apparently has upgraded that warning to an error.
Wow you have this so backwards & wrong [lol]
1. There is no C++ 99 standard, C99 refers to the latest C standard not C++, they are separate and C++ is not a proper super-set of C anymore (as of this moment).
2. There is no C++ 2005 standard, its sounds like your just talking about VC++ 8.0
3. What you said about for loops is backwards, both are valid in anycase in C++ & C99.
[Edited by - snk_kid on June 15, 2005 8:11:38 PM]
After further investigation your under C89 mode [rolleyes] consider:
GCC:
Looks fimillar wright [wink].
int main() { for(int x = 0; x < 4; ++x) ;}
GCC:
$ gcc -std=c89 foo.c -cfoo.c: In function `main':foo.c:3: error: 'for' loop initial declaration used outside C99 mode
Looks fimillar wright [wink].
Thanks for the background on c99 mode... I read somewhere that c99 isn't supported by Microsoft... I found this online which gave me some info for anyone else interested:
http://www.cran.org.uk/bruce/blog/index.php?p=27
I actually figured out myself to change the for loop as suggested by mumpo and that made the compiler error go away, but I wanted to know what c99 mode referred to...
http://www.cran.org.uk/bruce/blog/index.php?p=27
I actually figured out myself to change the for loop as suggested by mumpo and that made the compiler error go away, but I wanted to know what c99 mode referred to...
Quote:Original post by shishio
Thanks for the background on c99 mode... I read somewhere that c99 isn't supported by Microsoft... I found this online which gave me some info for anyone else
Yeah it seems they sell their compiler mainly as a C++ compiler not really C so its going to try and conform with the C++ standard more than C (although there are talks with both standards to combine and stuff) plus now MS have introduced a new standardized language C++/CLI which its latest C++ compiler supports too i think they are going to focus on that more for the time being.
Quote:Original post by shishio
I actually figured out myself to change the for loop as suggested by mumpo and that made the compiler error go away, but I wanted to know what c99 mode referred to...
if your using C++ or C99 (and i think any with GCC extensions on) both forms are valid.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement