Kompilatorfel C3068

"funktion" : en "naken" funktion får inte innehålla objekt som skulle kräva avspolning om ett C++-undantag inträffade

Anmärkningar

Kompilatorn kunde inte utföra stackavveckling på en naked funktion som utlöste ett undantag eftersom ett tillfälligt objekt skapades i funktionen och C++ undantagshantering (/EHsc) angavs.

Lös det här felet genom att göra minst något av följande:

  • Kompilera inte med /EHsc.

  • Markera inte funktionen som naked.

  • Skapa inte ett tillfälligt objekt i funktionen.

Om en funktion skapar ett tillfälligt objekt i stacken, om funktionen utlöser ett undantag, och om C++-undantagshantering är aktiverat, rensar kompilatorn stacken om ett undantag utlöses.

När ett undantag utlöses körs kompilatorgenererad kod, kallad prolog och epilog och som inte finns i en naken funktion, för en funktion.

Example

I följande exempel genereras C3068:

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

void b(A){}

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