Aracılığıyla paylaş


Derleyici Uyarısı (düzey 4) C4843

'type1': Dizi veya işlev türüne başvurunun özel durum işleyicisine ulaşılamıyor, bunun yerine 'type2' kullanın

Açıklamalar

Dizi veya işlev türüne başvuru işleyicileri hiçbir özel durum nesnesiyle eşleşmez. Visual Studio 2017 sürüm 15.5'den başlayarak, derleyici bu kurala uyar ve düzey 4 uyarısı oluşturur. Ayrıca kullanıldığında artık veya wchar_t* işleyicisi char* ile dize değişmez değeri /Zc:strictStrings eşleşmez.

Bu uyarı Visual Studio 2017 sürüm 15.5'te yenidir. Uyarıları derleyici sürümüne göre devre dışı bırakma hakkında bilgi için bkz . Derleyici sürümüne göre derleyici uyarıları.

Örnek

Bu örnekte C4843'e neden olan çeşitli catch deyimler gösterilmektedir:

// 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
}

Derleyici şu uyarıları oluşturur:

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

Aşağıdaki kod hatadan kaçınıyor:

// C4843_fixed.cpp
// compile by using: cl /EHsc /W4 C4843_fixed.cpp
int main()
{
    try {
        throw "";
    }
    catch (int (*)[1]) {}
}