对裸函数使用Try/Catch

Using Try/Catch with naked functions

本文关键字:Try Catch 函数      更新时间:2023-10-16

为什么不允许使用Try-Catch与naked函数?还有其他选择吗?

Error 2 error C2490: 'try' not allowed in function with 'naked' attribute   

结构化异常处理和c++异常处理结构是不允许的,因为它们必须跨堆栈框架展开。

在"naked"上使用异常处理不起作用的原因是它们的函数没有标准的prolog和epilog部分,这对于"展开堆栈"是必要的,而"catch"有。这里是这么说的(裸函数的限制)。

你需要找到一些其他的方法来实现你想要的——要么以某种方式包装你的裸函数,使它们"穿着"[dressed = naked的反义词,不确定这是否是技术术语],或者不要使用try-catch。