我想将一个相同的结构复制到另一个结构中,然后将其用作与第一个结构的比较。问题是当我这样做的时候我的编译器会给我一个警告!我应该用另一种方式还是我做错了:
在头文件中:
extern struct RTCclk
{
uint8_t second;
uint8_t minute;
uint8_t hour;
uint8_t mday;
uint8_t month;
uint8_t year;
}
RTCclk;
在C文件中:
struct RTCclk RTCclk;
struct RTCclk RTCclkBuffert;
void FunctionDO(void)
{
... // Some Code
/* Copy first struct values into the second one */
memcpy(&RTCclk, &RTCclkBuffert, sizeof RTCclk);
}
最佳答案
对于简单的结构,您可以像使用memcpy
一样使用,也可以从一个结构分配到另一个结构:
RTCclk = RTCclkBuffert;
编译器将为您创建复制结构的代码。
关于拷贝的一个重要注意事项:它是一个浅拷贝,就像
memcpy
一样。这意味着,如果你有一个包含指针的结构,那么它只是将被复制的实际指针,而不是它们指向的内容,所以在复制之后,你将有两个指针指向同一个内存。