一份介绍延迟机制参考实现的论文的概述(与Robert C. Seacord合着)已在SAC’21上接受发表:
它介绍了C语言机制的实现端,该机制适用于Go编程语言中的类似功能,用于错误处理和延迟清除。这是使用这种功能的简单示例:
守卫{void * const p = malloc(25);如果(!p)中断;推迟免费(p); void * const q = malloc(25);如果(!q)中断;推迟免费(q);如果(mtx_lock(& mut)== thrd_error)中断;延迟mtx_unlock(& mut); //获取的所有资源//使用p,q和mut直到块结束...}
该机制提高了现有语言功能的接近度,可见性,可维护性,健壮性以及清理和错误处理的安全性。本文描述的功能的库实现可在https://gustedt.gitlabpages.inria.fr/defer/的开放源代码许可下公开获得。
该功能正在考虑纳入C标准中,并且已经在上次WG14会议上进行了讨论。主要介绍可以在与Alex Gilding,Tom Scogland,Robert C.Seacord,Martin Uecker和Freek Wiedijk一起撰写的论文中找到: