VS2010中,error C2440 :初始化解决方法

VS2010中,error C2440 :初始化
 error C2440: “初始化”: 无法从“void (__cdecl *)(uint8_t *,uint8_t *)”转换为“void (__cdecl *)(void *,void *)”
请问这是什么错误,怎么修改呢? 

struct  ArrayDescriptor {
const XsSize itemSize;  
void (*itemSwap)(void* a, void* b);      
void (*itemConstruct)(void* e);  
void (*itemCopyConstruct)(void* e, void const* s);  
void (*itemDestruct)(void* e);  
void (*itemCopy)(void* to, void const* from);  
int (*itemCompare)(void const* a, void const* b);  
};
typedef struct ArrayDescriptor arrayDescriptor;
typedef struct Array Array;



\copydoc ArrayDescriptor::itemSwap \note Specialization for uint8_t

 
void swapUint8(uint8_t* a, uint8_t* b)
{
uint8_t tmp = *a;
*a = *b;
*b = tmp;
}

//! \copydoc ArrayDescriptor::itemCopy \note Specialization for uint8_t
void copyUint8(uint8_t* to, uint8_t const* from)
{
*to = *from;
}

//! \copydoc ArrayDescriptor::itemCompare \note Specialization for uint8_t
int compareUint8(uint8_t const* a, uint8_t const* b)
{
if (*a < *b)
return -1;
if (*a > *b)
return 1;
return 0;
}


ArrayDescriptor const  g_xsByteArrayDescriptor = {
 
sizeof(uint8_t), 
XSEXPCASTITEMSWAP swapUint8 ,
0,  
XSEXPCASTITEMCOPY copyUint8,  
0,  
XSEXPCASTITEMCOPY copyUint8,  
XSEXPCASTITEMCOMP compareUint8  
};
------解决思路----------------------
无法将 uint8_t*转换为void*。类型不一致。
------解决思路----------------------
将所有void*替换为uint8_t*
------解决思路----------------------
考虑在代码最上面加一句,试试:
#define uint8_t (unsigned char)
------解决思路----------------------
引用:
@#5
某处有这个定义:typedef unsigned char uint8_t;
按你说的加上了,然后出现了这个错误
error C2062: 意外的类型“unsigned char”

都已经有typede了就不应该再加上这define。只用一个就行了。

你说的函数指针没法转换的问题,你会定义函数指针类型吗?定义一个函数指针类型,将出问题的函数指针强制转换
------解决思路----------------------
 error C2440: “初始化”: 无法从“void (__cdecl *)(uint8_t *,uint8_t *)”转换为“void (__cdecl *)(void *,void *)”

对于这种错误。可以定义一个函数指针类型

typedef  void(*pfunc)(void *,void *);

在这句前面加上

XSEXPCASTITEMSWAP (pfunc)swapUint8 ,//强制函数指针转换

就可以了

PS:你直接引用,我就知道了,不用私信给我。