컴파일러 오류 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