Condividi tramite


Errore del compilatore C3821

'function': non è possibile usare il tipo o la funzione gestita in una funzione non gestita

Le funzioni con assembly inline o setjmp non possono contenere tipi di valore o classi gestite. Per correggere questo errore, rimuovere l'assembly inline e setjmp rimuovere gli oggetti gestiti.

C3821 può verificarsi anche se si tenta di usare l'archiviazione automatica in una funzione vararg. Per altre informazioni, vedere Elenchi di argomenti variabili (...) (C++/CLI) e Semantica dello stack C++ per i tipi di riferimento.

Esempi

L'esempio seguente genera l'errore C3821.

// C3821a.cpp
// compile with: /clr /c
public ref struct R {};
void test1(...) {
   R r;   // C3821
}

L'esempio seguente genera l'errore C3821.

// C3821b.cpp
// compile with: /clr
// processor: /x86
ref class A {
   public:
   int i;
};

int main() {
   // cannot use managed classes in this function
   A ^a;

   __asm {
      nop
   }
} // C3821