다음을 통해 공유


컴파일러 오류 C3821

'function': 관리되는 형식 또는 함수는 관리되지 않는 함수에서 사용할 수 없습니다.

인라인 어셈블리 또는 setjmp 가 있는 함수는 값 형식 또는 관리되는 클래스를 포함할 수 없습니다. 이 오류를 해결하려면 인라인 어셈블리 setjmp 를 제거하거나 관리되는 개체를 제거합니다.

또한 vararg 함수에서 자동 스토리지를 사용하려는 경우에도 C3821이 발생할 수 있습니다. 자세한 내용은 참조 형식에 대한 변수 인수 목록(...)(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