コードと、受信したデータに応じてバイト転送またはワード転送の必要性を理解した後、memcpy.c の実装を試しています。
#include<stdio.h>
void* my_memcpy(void*,const void*,int); // return type void* - can return any type
struct s_{
int a;
int b;
};
int main(){
struct s_ ss,dd;
ss.a = 12;
ss.b = 13;
printf("\n sizeof(struct) : %d \n",sizeof(ss));
my_memcpy(&dd,&ss,sizeof(ss));
printf("\n a:%d b:%d \n",dd.a,dd.b);
return 0;
}
void* my_memcpy(void* s,const void* d,int count){
if(((s | d | count) & (sizeof(unsigned int)-1)0)){
char* ps = (char* )s;
char* pd = (char* )d;
char* pe = (char* )s + count;
while(ps != pe){
*(pd++) = *(ps++);
}
}
else{
unsigned int* ps = (unsigned int* )s;
unsigned int* pd = (unsigned int* )d;
unsigned int* pe = (unsigned int* )s + count;
while(ps != pe){
*(pd++) = *(ps++);
}
}
}
エラー: バイナリへの無効なオペランド | (void* および const void*)。
const void* で void* を作成することはできませんでした。
前にmemcpy() の実装を理解するで尋ねた質問では、(ADDRESS) に型キャストされます。
このエラーを解決するにはどうすればよいですか?