滥用指针的强制类型转换 会有什么隐患或缺点?
在当前项目中,我们经常使用void * 来代替不确定的结构体指针类型,到使用时,就强制类型转换成对应的类型
或者 当两种结构体的第一个成员是一样的,而我们只使用第一个成员时,把这种结构体指针强制转换成另外一种结构体指针,比如:
typedef struct node {
struct node *pre;
struct node *next;
}NodeType;
typedef struct {
NodeType node;
/*others*/
}OtherNode;
我们会把OtherNode * 类型强制转换为 NodeType* 来操作 比如:
OtherNode *p1 = ...;
OtherNode *p2 = ...;
p2 = (NodeType *)p1->next;
这样做会带来一定的方便,但如果说找缺点, 是什么?
或者泛泛的来说,滥用指针的强制类型转换会有什么缺陷,举个例子