Partilhar via


Erro do compilador C3821

'função': o tipo ou função gerenciada não pode ser usada em uma função não gerenciada

Observações

As funções com assembly embutido ou setjmp não podem conter tipos de valor ou classes gerenciadas. Para corrigir este erro, remova o assembly embutido e setjmp ou remova os objetos geridos.

C3821 também pode ocorrer se você tentar usar o armazenamento automático em uma função vararg. Para obter mais informações, consulte Variable Argument Lists (...) (C++/CLI) e C++ Stack Semantics for Reference Types.

Examples

O exemplo a seguir gera C3821.

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

O exemplo a seguir gera 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