#include typedef unsigned char byte; byte READBYTE(byte ** from) { byte *from_tmp = *from; byte b; memcpy (&b, from_tmp, sizeof (byte)); from_tmp++; *from = (void *)from_tmp; return b; } Gives:pickle@detritus:~$ gcc -c test.c test.c: In function ‘READBYTE’: test.c:9: warning: incompatible implicit declaration of built-in function ‘memcpy’