c – 使用LLVM进行异常处理时出错
发布时间:2020-12-16 07:28:45 所属栏目:百科 来源:网络整理
导读:我试图用CLANG编译C代码作为前端和后端作为LLVM. 版本是3.0. 异常处理似乎存在问题.每当代码抛出异常时,程序就会终止并显示“抛出异常后终止”的消息. 这是我尝试使用CLANG的示例代码之一. struct A {};struct B : virtual A {};struct C : virtual A {};str
我试图用CLANG编译C代码作为前端和后端作为LLVM.
版本是3.0. 异常处理似乎存在问题.每当代码抛出异常时,程序就会终止并显示“抛出异常后终止”的消息. 这是我尝试使用CLANG的示例代码之一. struct A {}; struct B : virtual A {}; struct C : virtual A {}; struct D : virtual A {}; struct E : private B,public C,private D {}; extern "C" void abort (); void fne (E *e) { throw e; } void check(E *e) { int caught; caught = 0; try { fne(e); } catch(A *p) { caught = 1; if (p != e) abort();} catch(...) { abort(); } if (!caught) abort(); caught = 0; try { fne(e); } catch(B *p) { abort ();} catch(...) { caught = 1; } if (!caught) abort(); caught = 0; try { fne(e); } catch(C *p) { caught = 1; if (p != e) abort();} catch(...) { abort(); } if (!caught) abort(); caught = 0; try { fne(e); } catch(D *p) { abort ();} catch(...) { caught = 1; } if (!caught) abort(); return; } int main () { E e; check (&e); check ((E *)0); return 0; } 我对LLVM很陌生,所以不太了解它.它还有与LLVM生成异常处理表有关的任何内容. 解决方法
看到你的另一个问题……如果你在arm / linux上 – 那么这样的结果是可以预料的.对EH的支持还没有在那里完成,因此,它可能是任意破坏的.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 如何使用Oracle Apex处理版本控制
- Json.NET匿名类型序列化
- FastJSON的SerializerFeature记录
- cometd: dojo channel ""/cometd/meta"
- c# – 在Windows服务上调用公共方法
- c – readyRead()在Qt中如何工作?
- Flex3Flex4的list组件设置滚动条偏移量&显示隐藏的办法
- c# – CopyToDataTable:如果一个字段为NULL,为什么会抛出错
- PostgreSQL:“ FATAL: requested WAL segment00800002A0 h
- c# – Google Chrome如何管理下载后自动执行安装?