我从这里了解到了
现在考虑以下代码中的结构体。它们包含相同的元素(相同的
__packed__
,我理解当在struct
或union
中使用__packed__
时,它意味着成员变量被放置在最小化存储struct
或union
所需内存的方式中。现在考虑以下代码中的结构体。它们包含相同的元素(相同的
type
,相同的变量名并按相同顺序放置)。不同之处在于,一个是__packed__
,而另一个则没有。#include <stdio.h>
int main(void)
{
typedef struct unpacked_struct {
char c;
int i;
float f;
double d;
}ups;
typedef struct __attribute__ ((__packed__)) packed_struct {
char c;
int i;
float f;
double d;
}ps;
printf("sizeof(my_unpacked_struct) : %d \n", sizeof(ups));
printf("sizeof(my_packed_struct) : %d \n", sizeof(ps));
ups ups1 = init_ups();
ps ps1;
return 0;
}
有没有一种方法可以将未打包的结构ups1
复制到已打包的结构ps1
中,而不需要进行逐个成员变量复制
?是否有类似memcpy()
的东西在这里适用?