Compartilhar via


Erro do compilador C3821

'function': tipo ou função gerenciados não podem ser usados em uma função não gerenciada

Funções com assembly embutido ou setjmp não podem conter tipos de valor ou classes gerenciadas. Para corrigir esse erro, remova o assembly embutido e setjmp ou remova os objetos gerenciados.

C3821 também pode ocorrer se você tentar usar o armazenamento automático em uma função vararg. Para obter mais informações, consulte Listas de Argumentos Variáveis (...) (C++/CLI) e Semântica de Pilha C++ para Tipos de Referência.

Exemplos

A amostra a seguir gera C3821.

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

A amostra 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