C语言泛型容器:使用Maybe进行安全除法

2025-08-11

本文介绍了如何在C语言中实现类型和边界安全的泛型容器。作者首先介绍了受Haskell启发的Maybe类型,用于处理可能不存在值的函数返回值,例如除法运算中除数为零的情况。然后,作者通过宏定义实现了Maybe类型,并使用它编写了一个安全的除法函数,该函数能够处理除数为零和被除数为最小整数且除数为-1的情况。最后,作者通过分析GCC生成的汇编代码,验证了该函数的安全性,并指出这种方法在证明C程序完全安全方面存在局限性。

阅读更多
开发

C语言中的泛型容器:vec实现

2025-07-26

本文介绍了在C语言中实现类型和边界安全的泛型容器“vec”的方法。vec实质上是一个可调整大小的数组,通过`realloc`实现动态增长。文章详细讲解了vec的实现细节,包括`vec_push`函数的实现,以及如何处理内存分配错误。此外,作者还探讨了两种改进的接口:`vec_push_cap`和`vec_push_auto`,以提高性能,并讨论了边界安全性的问题,以及如何通过宏`vec2array`与传统的C数组进行互操作。

阅读更多
开发