RT,小弟最近要实现一个windows平台的无锁队列,windows有个api叫InterlockedCompareExchangePointer,提供比较并交换的原子操作。但在使用它时遇到了问题,它要求参数类型为void *,根据需要应该传入链表头指针(stNode *)。第一个参数是void **的二级指针,不能将链表类型指针自动转为void,如果进行显示转,那就增加了一步代码,引入了新问题。如果把链表头定义为void*,那第二个参数要求是pNode->next,也需要显示转,仍然出现那个问题。大家是怎么做的呢?
------解决思路----------------------
不管你是什么类型,函数传入参数时,使用(void*)转换一下
aType x;
int a=aFun((void*)&x);