尽管可以使用 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/