A bug with variables and functions of the same name?

Ian Lance Taylor iant@google.com
Tue Nov 28 03:53:00 GMT 2006


darby johnston <darbyjohnston@yahoo.com> writes:

> int a(int);
> 
> int main(int, char **)
> {
>   int a = a(100);
>   return 0;
> }
> 
> > g++ -Wall -o foo foo.cxx
> foo.cxx: In function ‘int main(int, char**)’:
> foo.cxx:7: error: ‘a’ cannot be used as a function
> 
> That seems normal, but add a "const" to the above:
> 
>   const int a = a(100);
> 
> And it compiles without any errors (and even links
> ok).

That seems like a bug.  Fortunately it seems to be fixed in the
upcoming 4.2 release.

> I made this simple test case from a bug I found
> in my code, which even stranger, emitted warnings
> like:
> 
> warning: ‘retval.170’ is used uninitialized in this
> function
> 
> Of course, I don't have any variables named
> "retval.170". Is this a bug with gcc?

These errors messages also should be better in 4.2.

Ian



More information about the Gcc-help mailing list