Bagikan melalui


Compiler Warning (level 4) C4456

deklarasi 'pengidentifikasi' menyembunyikan deklarasi lokal sebelumnya

Deklarasi pengidentifikasi dalam cakupan lokal menyembunyikan deklarasi deklarasi lokal sebelumnya dengan nama yang sama. Peringatan ini memungkinkan Anda mengetahui bahwa referensi ke pengidentifikasi dalam cakupan lokal diselesaikan ke versi yang dideklarasikan secara lokal, bukan lokal sebelumnya, yang mungkin atau mungkin bukan niat Anda. Untuk memperbaiki masalah ini, kami sarankan Anda memberikan nama variabel lokal yang tidak berkonflik dengan nama lokal lainnya.

Contoh

Sampel berikut menghasilkan C4456 karena variabel int x kontrol perulangan dan variabel double x lokal dalam member_fn memiliki nama yang sama. Untuk memperbaiki masalah ini, gunakan nama yang berbeda untuk variabel lokal.

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

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