gpt4 book ai didi

c - 泛型与类型安全?在 C 中使用 void*

转载 作者:太空狗 更新时间:2023-10-29 16:31:48 27 4
gpt4 key购买 nike

来自 OO(C#、Java、Scala),我非常重视代码重用和类型安全的原则。上述语言中的类型参数可以完成这项工作,并启用既类型安全又不会“浪费”代码的通用数据结构。

当我陷入 C 语言时,我意识到我必须做出妥协,而且我希望它是正确的。要么我的数据结构在每个节点/元素中都有一个 void * 并且我失去了类型安全性,要么我必须为我想使用它们的每种类型重写我的结构和代码。

代码的复杂性是一个明显的因素:遍历数组或链表是微不足道的,向结构添加 *next 也不是额外的工作;在这些情况下,不尝试重用结构和代码是有意义的。但对于更复杂的结构,答案并不那么明显。

还有模块化和可测试性:将类型及其操作与使用该结构的代码分开可以使测试更容易。反之亦然:在结构上测试某些代码的迭代,同时尝试做其他事情会变得困惑。

那么你有什么建议呢? void * 和重用或类型安全和重复代码?有什么一般原则吗?当它不适合时,我是否试图将 OO 强制到程序上?

编辑:请不要推荐C++,我的问题是关于C的!

最佳答案

我会说使用 void * 这样您就可以重新使用代码。重新实现例如更多工作一个链接列表,而不是确保您正确获取/设置列表中的数据。

尽可能多地从 glib 中获取提示尽可能地,我发现它们的数据结构非常好用且易于使用,并且几乎没有因为类型安全性的丧失而遇到麻烦。

关于c - 泛型与类型安全?在 C 中使用 void*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1899906/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com