> Secondly I do not understand the void * for memcpy, is it expecting a pointer to a function here?
Then how do you know how to call the function.
Not knowing what void* is is a pretty basic part of C knowledge.
> "const void *__restrict__"
This tells memcpy that
- the memory isn't being pointed to by another pointer (like overlapping with the destination for example) - that's the __restrict__ part.
- the memory could be any type - that's the void* part.
- the memory won't be changed by memcpy - that's the const part
- the memory won't spontaneously change - that's implied by the lack of volatile.
pRx fails on this last point.
> I would like to know how do I cast to make the warning go away?
You could use a for loop.
Code:
for ( i = 0 ; i < 3 ; i++ ) noCRC[i] = pRx[i];
Or show/explain why your pRx absolutely must be volatile.