Delen via


Compilerfout C3068

'functie': een 'naakte' functie kan geen objecten bevatten die moeten worden afgewikkeld als er een C++-uitzondering is opgetreden

Opmerkingen

De compiler was niet in staat de stack af te wikkelen bij een naked functie die een uitzondering heeft geworpen omdat er een tijdelijk object in de functie werd gecreƫerd en C++-uitzonderingsafhandeling (/EHsc) was gespecificeerd.

Ga op een van de volgende manieren te werk om deze fout op te lossen:

  • Compileer niet met /EHsc.

  • Markeer de functie niet als naked.

  • Maak geen tijdelijk object in de functie.

Als een functie een tijdelijk object op de stack maakt, als de functie een uitzondering genereert en als de verwerking van C++-uitzonderingen is ingeschakeld, wordt de stack opgeschoond als er een uitzondering wordt gegenereerd.

Wanneer er een uitzondering wordt gegenereerd, wordt compiler gegenereerde code, de prolog en epilog genoemd en die niet aanwezig zijn in een naakte functie, uitgevoerd voor een functie.

Example

In het volgende voorbeeld wordt C3068 gegenereerd:

// C3068.cpp
// compile with: /EHsc
// processor: x86
class A {
public:
   A(){}
   ~A(){}
};

void b(A){}

__declspec(naked) void c() {
   b(A());   // C3068
}