有没有办法比较两个void指针在C中断言相同的类型?

时间:2012-03-20 04:45:19

标签: c pointers assert void

我正在学习C并在C​​中尝试粗略实现链表。长话短说我有一个只包含一个void指针(元素)的结构和另一个指向下一个节点的指针。(代码可以遵循)我的问题是,当将头节点和其他节点传递给新函数时,有没有办法确保这两个元素属于同一类型?两个节点应该能够保存任何类型的数据。我已经尝试与sizeof()进行比较,但我无法顺从void指针。提前谢谢!

struct Node{
    void* element;
    struct Node* next;
}

这是节点的代码,我只需要一种方法将它们与assert进行比较,以确保链接列表具有所有相同的元素类型!谢谢!

2 个答案:

答案 0 :(得分:9)

不 - 你通常想要避免这样的设计,但是如果你真的无法避免它,你通常需要在节点中放置一个枚举来告诉你它包含的数据类型。

答案 1 :(得分:1)

void *正是一个无类型指针。换句话说,你的程序知道的只是它指向SOMETHING的指针。这很有用,但具体(有意)并不是您正在寻找的内容。