编译器错误 C2743
“type”:无法使用 __clrcall 析构函数或复制构造函数捕捉本机类型
使用 /clr 编译的模块尝试捕获本机类型的异常,以及该类型的析构函数或复制构造函数使用 __clrcall
调用约定的情况。
使用 /clr 编译时,异常处理需要本机类型中的成员函数 __cdecl,而不是 __clrcall。 在使用 /clr 编译的模块中,无法捕获具有使用 __clrcall
调用约定的成员函数的本机类型。
有关详细信息,请参阅 /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
}