Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
"függvény" : a függvény feltételezi, hogy nem ad kivételt, de nem
Megjegyzések
A függvénydeklarációk egy (esetleg implicit) noexcept kijelölőt, egy üres throw kivételkijelölőt vagy egy __declspec(nothrow) attribútumot tartalmaznak, a definíció pedig egy vagy több dobás utasítást tartalmaz. A C4297 feloldásához ne kíséreljen meg kivételeket kivenni a deklarált __declspec(nothrow)függvényekben, noexcept(true) vagy throw(). Másik lehetőségként távolítsa el az noexcept, throw()vagy __declspec(nothrow) specifikációt.
Alapértelmezés szerint a fordító implicit noexcept(true) azonosítókat hoz létre a felhasználó által definiált destruktorokhoz és felszabadító függvényekhez, valamint a fordító által létrehozott speciális tagfüggvényekhez. Ez megfelel az ISO C++11 szabványnak. Ha meg szeretné akadályozni az implicit noexcept-meghatározók létrehozását, és visszaállítja a fordítót a Visual Studio 2013 nem szabványos viselkedésére, használja az /Zc:implicitNoexcept- fordító lehetőséget. További információkért lásd: /Zc:implicitNoexcept (Implicit Exception Specifiers).
A kivétel specifikációiról további információt a Kivétel specifikációi (dobás) című témakörben talál. A kivételkezelési viselkedés fordításkor történő módosításáról a /EH (Kivételkezelési modell) című témakörben olvashat.
Ez a figyelmeztetés olyan __declspec(dllexport) függvényekre is létrehozódik, amelyek az "extern 'C'" meg vannak jelölve, még akkor is, ha azok "C++" függvények.
Example
Az alábbi példa c4297-et hoz létre:
// C4297.cpp
// compile with: /W1 /LD
void __declspec(nothrow) f1() // declared nothrow
// try the following line instead
// void f1()
{
throw 1; // C4297
}