Ошибка компилятора C3821

"function": управляемый тип или функция нельзя использовать в неуправляемой функции

Функции с встроенной сборкой или setjmp не могут содержать типы значений или управляемые классы. Чтобы устранить эту ошибку, удалите встроенную сборку и setjmp удалите управляемые объекты.

C3821 также может возникать, если вы пытаетесь использовать автоматическое хранилище в функции vararg. Дополнительные сведения см. в статьях списков аргументов переменных (...) (C++/CLI) и Семантики стека C++ для ссылочных типов.

Примеры

В следующем примере создается C3821.

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

В следующем примере создается 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