Condividi tramite


Errore del compilatore C3068

'function': una funzione 'naked' non può contenere oggetti che richiedono la rimozione se si è verificata un'eccezione C++

Osservazioni:

Il compilatore non è riuscito a eseguire la rimozione dello stack su una funzione naked che ha generato un'eccezione perché è stato creato un oggetto temporaneo nella funzione e nella gestione delle eccezioni C++ (/EHsc) è stato specificato.

Per risolvere questo errore, eseguire almeno una delle operazioni seguenti:

  • Non compilare con /EHsc.

  • Non contrassegnare la funzione come naked.

  • Non creare un oggetto temporaneo nella funzione .

Se una funzione crea un oggetto temporaneo nello stack, se la funzione genera un'eccezione e se la gestione delle eccezioni C++ è abilitata, il compilatore pulisce lo stack se viene generata un'eccezione.

Quando viene generata un'eccezione, il codice generato dal compilatore, denominato prologo ed epilogo e che non sono presenti in una funzione naked, viene eseguito per una funzione.

Esempio

L'esempio seguente genera l'errore C3068:

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

void b(A){}

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