我有两个对象都同一类型的,例如:如何使用memcpy交换两个对象的部分?
typedef struct s_Object
{
signed int a[3];
double float b;
unsigned short int c[30];
struct s_Object *next,
*prev;
} t_Object;
t_Object A, B;
我需要一个像一些通用的功能:
swap_vars(&A, &B);
将不会掉球,但所有其他数据的对象可以包含。在C中可能吗?
假设指针放置在最高地址,我的第一个想法是:
void swap_vars(t_Object *pA, t_Object *pB){
t_Object C;
memcpy(&C, pA, sizeof(t_Object)-sizeof(t_Object *)*2;
memcpy(pA, pB, sizeof(t_Object)-sizeof(t_Object *)*2;
memcpy(pB, &C, sizeof(t_Object)-sizeof(t_Object *)*2;
}
,但我不知道是怎么便携式它(或者错误的话)?
我正在寻找最便携的解决方案。
你不应该假设任何关于结构的布局,只是使用他们的名字memcopy个别成员 – 2011-03-23 13:46:38
@Martin:这不是一个漂亮的解决方案,因为每次我将改变对象的类型描述,我必须更新这个函数以及。 – psihodelia 2011-03-23 13:50:51