Peringatan Pengompilasi (level 4) C4843
'type1': Penanganan pengecualian referensi ke array atau jenis fungsi tidak dapat dijangkau, gunakan 'type2' sebagai gantinya
Keterangan
Pengatur referensi ke array atau jenis fungsi tidak pernah cocok untuk objek pengecualian apa pun. Mulai Visual Studio 2017 versi 15.5, kompilator mematuhi aturan ini dan meningkatkan peringatan tingkat 4. Ini juga tidak lagi cocok dengan pengatur char*
atau wchar_t*
dengan string literal saat /Zc:strictStrings
digunakan.
Peringatan ini baru di Visual Studio 2017 versi 15.5. Untuk informasi tentang cara menonaktifkan peringatan berdasarkan versi kompilator, lihat Peringatan pengkompilasi menurut versi kompilator.
Contoh
Sampel ini menunjukkan beberapa catch
pernyataan yang menyebabkan C4843:
// C4843_warning.cpp
// compile by using: cl /EHsc /W4 C4843_warning.cpp
int main()
{
try {
throw "";
}
catch (int (&)[1]) {} // C4843 (This should always be dead code.)
catch (void (&)()) {} // C4843 (This should always be dead code.)
catch (char*) {} // This should not be a match under /Zc:strictStrings
}
Pengkompilasi menghasilkan peringatan ini:
warning C4843: 'int (&)[1]': An exception handler of reference to array or function type is unreachable, use 'int*' instead
warning C4843: 'void (__cdecl &)(void)': An exception handler of reference to array or function type is unreachable, use 'void (__cdecl*)(void)' instead
Kode berikut menghindari kesalahan:
// C4843_fixed.cpp
// compile by using: cl /EHsc /W4 C4843_fixed.cpp
int main()
{
try {
throw "";
}
catch (int (*)[1]) {}
}