まずvoidはサイズがない型なので、void*をunsigned char*などにキャストしないといけない。
int memcmp(void *p1, void *p2, size_t n)
unsigned char *pb1 = (unsigned char*)p1;
unsigned char *pb2 = (unsigned char*)p2;
for(; n--; pb1++, pb2++) if (*pb1 != *pb2) return (int)*pb1 - (int)*pb2;
return 0;
}