c - 使用 void 指针的 C 中的泛型编程

标签 c generics pointers

尽管可以使用 void pointer(generic pointer) 在 C 中编写泛型代码,但我发现调试代码非常困难,因为 void pointer 可以在没有编译器警告的情况下采用任何指针类型。 (例如函数 foo() 采用 void 指针,它应该是指向结构的指针,但如果传递了 char 数组,编译器不会提示。) 在 C 中使用 void 指针时,你们都采用了什么样的方法/策略?

最佳答案

解决方案是不要使用 void* 除非你真的、真的必须这样做。实际上需要 void 指针的地方非常少:线程函数的参数,以及其他一些需要通过通用函数传递特定于实现的数据的地方。在任何情况下,接受 void* 参数的代码都应该只接受通过 void 指针传递的一个数据类型,并且该类型应该记录在注释中并由所有来电者。

关于c - 使用 void 指针的 C 中的泛型编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455612/

相关文章:

c - 如何将函数指针作为参数传递?

c++ - 为什么与 C 相比,链接器在 C++ 中的任务更艰巨?

c++ - 指向共享内存POSIX的指针类型

Java:Commons-Collections 泛型:如何让自定义转换器工作

c# - 重载、泛型类型推断和 'params' 关键字

c - C语言中如何将缓冲区复制到字符指针

c - 如何在 C 中声明字符串

c - 为什么省略参数的显式 'int' 类型有时无法在 gcc 中编译?

c# - 用于请求不同资源的可选分页列表的通用异步方法

c - 多函数调用期间指向当前节点的节点指针