我想将一个相同的结构复制到另一个结构中,然后将其用作与第一个结构的比较。问题是当我这样做的时候我的编译器会给我一个警告!我应该用另一种方式还是我做错了:
在头文件中:

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一样。这意味着,如果你有一个包含指针的结构,那么它只是将被复制的实际指针,而不是它们指向的内容,所以在复制之后,你将有两个指针指向同一个内存。

07-25 22:29