自己在linux系统下实现memcpy的功能,我的理解是memcpy可以处理任意的数据类型?非懂勿入,高手分享!
自己在linux系统下实现memcpy的功能,我的理解是memcpy可以处理任意的数据类型?原型是void*memcpy(void*dest,constvoid*src,...
自己在linux系统下实现memcpy的功能,我的理解是memcpy可以处理任意的数据类型?原型是void *memcpy(void *dest, const void *src, size_t n);这里的void *和void不是关键字的void而是表示可以处理任意的数据类型,我们一般自己写的时候只能处理自己定义类型例如我们处理char型,不能做到通用,linux的库是怎样做到通用的,下面是我写的代码,我感觉和它本身的函数库存在差别,因为它提供的函数接口可以处理我们提供的任意类型,它提供了通用的API,而我们在真实验证的自己写的不能写一个通用的API
如何自己编写一个mymemcpy实现通用的API呢,就是不论我们向这个API传递什么类型的数据,这个函数都能实现相应的功能,通用API接口怎么写,谢谢分享?
我的意思是系统给我们提供的API是通用的,不管我们在main函数中第一的dest...和src...是什么类型,我们只要传递了dest的首地址和src的首地址它都能处理,我的意思是写一个通用API不管我们主函数的dest。。。和src。。。类型如何变化都能处理,这样才和c库提供给我们的memcpy的API具有相同的功能,对吧,能不能在函数里面封装所有的数据类型,通过检测数据类型做到想系统提过的API一样做到通用,这里是涉及到嵌入式linux系统下,别的系统不讨论! 展开
如何自己编写一个mymemcpy实现通用的API呢,就是不论我们向这个API传递什么类型的数据,这个函数都能实现相应的功能,通用API接口怎么写,谢谢分享?
我的意思是系统给我们提供的API是通用的,不管我们在main函数中第一的dest...和src...是什么类型,我们只要传递了dest的首地址和src的首地址它都能处理,我的意思是写一个通用API不管我们主函数的dest。。。和src。。。类型如何变化都能处理,这样才和c库提供给我们的memcpy的API具有相同的功能,对吧,能不能在函数里面封装所有的数据类型,通过检测数据类型做到想系统提过的API一样做到通用,这里是涉及到嵌入式linux系统下,别的系统不讨论! 展开
展开全部
#include<stddef.h>
#include<assert.h>
void *mymemcpy(void *dest, const void *src, size_t n)
{
assert(dest!=NULL&&src!=NULL);
char* tmp=(char*)dest;
const char*s=(const char*)src;
for(size_t i=0;i<n;i++)
{
tmp[i]=s[i];
}
return dest;
}
DevC++测试通过
#include<assert.h>
void *mymemcpy(void *dest, const void *src, size_t n)
{
assert(dest!=NULL&&src!=NULL);
char* tmp=(char*)dest;
const char*s=(const char*)src;
for(size_t i=0;i<n;i++)
{
tmp[i]=s[i];
}
return dest;
}
DevC++测试通过
更多追问追答
追问
假设主函数里面dest里面存放的是结构体数据或整形数据你这个函数接口还能处理吗?不能把,没有实现向c库里提供的通用API功能
追答
可以,后面的n是你要拷贝的大小,和数据类型无关
快又稳
2024-10-28 广告
2024-10-28 广告
在Linux环境下配置基于域名的虚拟主机,需安装Apache或Nginx等Web服务器,并编辑配置文件。以Apache为例,需创建虚拟主机配置文件,指定域名、文档根目录等,然后启用该配置文件并重启Apache服务。同样,Nginx也需在相应...
点击进入详情页
本回答由快又稳提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询