Visual Studio 2015 ahora advierte sobre las variables ocultas de forma predeterminada. Extracto de http://blogs.msdn.com/b/vcblog/archive/2014/11/12/improvements-to-warnings-in-the-c-compiler.aspx sigue:
las variables sombreados una declaración de variable "sombras" otro si el ámbito de inclusión ya contiene una variable con el mismo nombre.Por ejemplo:
void f(int x)
{
int y;
{
char x; //C4457
char y; //C4456
}
}
La declaración interna de x sombras el parámetro de la función f, por lo que el compilador emitirá: advertencia C4457: declaración de 'x' esconde parámetro de función La declaración interna de sombras Y la declaración de y en el alcance de la función, por lo que el compilador emitirá: advertencia C4456: la declaración de 'y' oculta la declaración local anterior Tenga en cuenta que, como antes, una declaración de variable con el mismo nombre como parámetro de función pero no encerrado en el alcance interno desencadena un error en su lugar:
void f(int x)
{
char x; //C2082
}
El compilador emite: error C2082: redefinición de los parámetros formales 'x'
Esto le puede interesar también. http://stackoverflow.com/questions/486508/how-does-template-argument-shadowing-work-in-vs2005 –