我看过这个博客帖子 , 该文档页面和这个例子 ,但我还是不明白如何抛出使用LLVM的IRBuilder对于非C ++面向语言的基本异常。
从我的理解,我必须:
- 创建
llvm::Value
包含扔值。 - 呼叫“功能”,传递给它扔值。 该功能将不会返回。
这个例子是使用系统倒带功能( _Unwind_RaiseException
),以抛出一个C ++异常,我真的不知道如何使用我自己养函数,而不是(因为我只需要抛出一个对象的指针)。 我在想什么?
我看过这个博客帖子 , 该文档页面和这个例子 ,但我还是不明白如何抛出使用LLVM的IRBuilder对于非C ++面向语言的基本异常。
从我的理解,我必须:
llvm::Value
包含扔值。 这个例子是使用系统倒带功能( _Unwind_RaiseException
),以抛出一个C ++异常,我真的不知道如何使用我自己养函数,而不是(因为我只需要抛出一个对象的指针)。 我在想什么?
简短的回答是, _Unwind_RaiseException
不是C ++ -特定功能。 它来自libunwind库,并允许抛出任何类型的异常。
更多细节上可以找到这些博客文章 。
当你不希望使用现有的C ++异常处理的基础设施,你需要复制它的部分为您的语言。
您可以使用C开卷机在执行编译-RT (或显著更复杂的之一的libstdc ++ ),并调用开卷的的libstdc ++开始。