Share via


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 noexceptkaldı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
}