d更好C与异常

原文

#18493期揭露了betterC实现中的疏忽:-betterC不支持触发异常,但却不要求不抛环境.#8184修复了自动生成隐式加到聚集字段后复制的试抓,但仍有基本问题.此PR试修复它.
我和AA/WB邮件讨论:
我:打算让-betterC在用引用计数异常,还是-betterC总是不抛?
WB:在可预见未来,betterC表示不抛.
AA:如果希望betterC只使用nothrow,应该限制它,即拒绝"nothrow"的代码.代码语义不应依赖于使用的编译开关.
WB:betterC假定nothrow是合理的,试throw时,它都会诊断出错误,并且它已假设nothrow了.
AA:这和把-betterC代码和非betterC代码链接在一起有什么关系?
WB:betterC要点是不需要runtime链接,它与非betterC代码链接需要runtime.如果这样做,就像链接C代码D代码一样.它完全不知道异常,它不会抓它们,在展开栈时,也不会执行块或析构器.

我:DIP1008怎么样?有没有计划让它在-betterC中可用?
WB:没有,因为在runtime中,展开异常代码仍然是必需的,并且在标准C库中也没有.

一般,修复是极其简单的:添加nothrow属性到模块顶部.
还需要修改druntimeobject.d,因为,尽管-betterC不与druntimephobos链接,但它仍然导入object.d.

posted @   zjh6  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示