다음을 통해 공유


컴파일러 오류 C2743

'type': __clrcall 소멸자 또는 복사 생성자를 사용하여 네이티브 형식을 catch할 수 없습니다.

/clr컴파일된 모듈은 네이티브 형식의 예외를 catch하려고 시도했으며, 여기서 형식의 소멸자 또는 복사 생성자가 호출 규칙을 사용합니다__clrcall.

/clr컴파일된 경우 예외 처리에서는 네이티브 형식의 멤버 함수가 __clrcall 않고 __cdecl 것으로 예상합니다. 호출 규칙을 사용하는 __clrcall 멤버 함수가 있는 네이티브 형식은 /clr컴파일된 모듈에서 catch할 수 없습니다.

자세한 내용은 /clr(공용 언어 런타임 컴파일)을 참조하세요.

예시

다음 샘플에서는 C2743을 생성합니다.

// C2743.cpp
// compile with: /clr
public struct S {
   __clrcall ~S() {}
};

public struct T {
   ~T() {}
};

int main() {
   try {}
   catch(S) {}   // C2743
   // try the following line instead
   // catch(T) {}

   try {}
   catch(S*) {}   // OK
}