Derleyici Uyarısı (düzey 1) C4297
'function' : işlevin özel durum oluşturmadığı varsayılır ama atılır
İşlev bildirimi bir (muhtemelen örtük) noexcept
tanımlayıcı, boş throw
bir özel durum tanımlayıcısı veya __declspec(nothrow) özniteliği içerir ve tanım bir veya daha fazla throw deyimi içerir. C4297'yi çözmek için, noexcept(true)
veya throw()
bildirilen __declspec(nothrow)
işlevlerde özel durumlar oluşturma girişiminde kullanmayın. Alternatif olarak, , throw()
veya __declspec(nothrow)
belirtimini noexcept
kaldırın.
Varsayılan olarak, derleyici kullanıcı tanımlı yıkıcılar ve serbest bırakıcı işlevleri ve derleyici tarafından oluşturulan özel üye işlevleri için örtük noexcept(true)
tanımlayıcılar oluşturur. Bu, ISO C++11 standardına uygundur. Örtük noexcept tanımlayıcılarının oluşturulmasını önlemek ve derleyiciyi Visual Studio 2013'ün standart olmayan davranışına döndürmek için /Zc:implicitNoexcept- derleyici seçeneğini kullanın. Daha fazla bilgi için bkz . /Zc:implicitNoexcept (Örtük Özel Durum Tanımlayıcıları).
Özel durum belirtimleri hakkında daha fazla bilgi için bkz . Özel Durum Belirtimleri (throw). Ayrıca derleme zamanında özel durum işleme davranışını değiştirme hakkında bilgi için bkz. /EH (Özel Durum İşleme Modeli).
Bu uyarı, C++ işlevleri olsalar bile extern "C" olarak işaretlenmiş __declspec(dllexport) işlevleri için de oluşturulur.
Aşağıdaki örnek C4297 oluşturur:
// C4297.cpp
// compile with: /W1 /LD
void __declspec(nothrow) f1() // declared nothrow
// try the following line instead
// void f1()
{
throw 1; // C4297
}