我想将相同的结构复制到另一个结构中,然后将其用作与第一个结构的比较。问题是,当我这样做时,我的编译器会给我一个警告!我应该以另一种方式做还是我做错了:
在头文件中:
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
。这意味着如果您有例如包含指针的结构,只会复制实际的指针,而不是它们指向的内容,因此在复制之后,您将有两个指向同一内存的指针。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)