在C,通用容器或安全容器?

Pau*_*nta 9 c containers idioms generic-programming void-pointers

在C++中,您可以使用模板同时拥有通用容器和类型安全容器.但是在C中,如果你想要通用容器,你必须(afaik)使用void*,这意味着你失去了类型安全性.要拥有类型安全的容器,您必须为要保留的每种类型的数据重新实现它们.

鉴于C遵循比C++ 更多的程序员知道他所做的理念,在C中什么更惯用的事情:使用通用容器void*,或为每种类型的数据制作自定义容器?

Edm*_*und 4

我的目标是通用容器:

  1. 一旦你习惯了,你只会想到void *它的意思,而我并不关心它的类型。就像Object在 Java 中一样——很长一段时间以来,通用容器也不具有类型安全性。

  2. 你只有一处可以改进。

  3. 你得不到类型安全;但是,通过重复实现类型安全容器,您将面临复制和粘贴错误的风险。这也可能导致错误。