Thread overview | |||||
---|---|---|---|---|---|
|
June 11, 2003 Let the lauding continue ... | ||||
---|---|---|---|---|
| ||||
Another nice one that I can never get any version of VC++ to deal with correctly bool bCorrect = true; int x; switch(something) { default: bCorrect = false; break; case ...: x = 1; break; case ...: x = 2; break; case ...: x = 3; break; } if(bCorrect) { y = x; // VC++ warns that x may be used without having been initialised. Pah! } DMC++ (along with others) handles this one nicely |
June 12, 2003 Re: Let the lauding continue ... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Matthew Wilson | Matthew Wilson schrieb...
> Another nice one that I can never get any version of VC++ to deal with correctly
>
> bool bCorrect = true;
> int x;
>
> switch(something)
> {
> default:
> bCorrect = false;
> break;
> case ...:
> x = 1;
> break;
> case ...:
> x = 2;
> break;
> case ...:
> x = 3;
> break;
> }
>
> if(bCorrect)
> {
> y = x; // VC++ warns that x may be used without having been initialised.
> Pah!
> }
>
> DMC++ (along with others) handles this one nicely
In this case it's obvious that x is initialized. But in general it might not be so easy for a compiler to detect this.
BTW, some warnings about uninitialized variables are only issued when the files are compiled with optimization enabled. Without optimizations the compiler does not detect these bugs.
- Heinz
|
June 12, 2003 Re: Let the lauding continue ... | ||||
---|---|---|---|---|
| ||||
Posted in reply to Heinz Saathoff | "Heinz Saathoff" <hsaat@bre.ipnet.de> wrote in message news:MPG.19524b67e8ac27a99896c2@news.digitalmars.com... > In this case it's obvious that x is initialized. But in general it might not be so easy for a compiler to detect this. DMC++ only issues the warning if it can prove that the variable is uninitialized, i.e. that there is *no* path that initializes it. > BTW, some warnings about uninitialized variables are only issued when the files are compiled with optimization enabled. Without optimizations the compiler does not detect these bugs. The information to detect this is gathered as a side effect of the optimization process. |
Copyright © 1999-2021 by the D Language Foundation