编译器警告(等级 4)C4457

“identifier”的声明隐藏了函数参数

本地范围内的 identifier 声明隐藏了同名函数参数的声明。 此警告指示在本地范围内对 identifier 的引用将解析为本地声明的版本,而不是参数,这可能是你的意图,也可能不是。 若要解决此问题,建议你提供不与参数名称冲突的局部变量名称。

示例

以下示例生成 C4457,因为参数 xmember_fn 中的局部变量 x 具有相同的名称。 若要解决此问题,请为参数和局部变量使用不同的名称。

// C4457_hide.cpp
// compile with: cl /W4 /c C4457_hide.cpp

struct S {
    void member_fn(unsigned x) {
        double a = 0;
        for (int x = 0; x < 10; ++x) {  // C4457
            a += x; // uses local x
        }
        a += x; // uses parameter x
    }
} s;