gpt4 book ai didi

c - 传递 'memcpy' 的参数 2 会丢弃来自指针目标类型的 'volatile' 限定符

转载 作者:太空狗 更新时间:2023-10-29 16:40:24 27 4
gpt4 key购买 nike

我有一个 volatile char * start_address; 指向寄存器部分(可能会因硬件行为而改变)。我需要阅读它并且我正在使用:

memcpy (
result_p, // starting address of destination
start_address, // starting address of source
result_len // for the length of the payload
);

我收到这个警告:

passing argument 2 of 'memcpy' discards 'volatile' qualifier from pointer target type

是阅读这些部分的更安全方法还是使用 memcpy 并防止此警告的更好方法?

最佳答案

memcpy 与 volatile 对象不兼容,函数签名中不匹配的指针类型有助于向您指出这一点。 memcpy 可以以任何顺序、任何单元大小进行复制,多次读取部分源,多次写入部分目标,等等。另一方面,volatile表达了一种意图,即访问对象的顺序和次数必须与它们在抽象机中的完全一致。如果要复制 volatile 数组,您需要编写自己的复制循环,看起来像一个简单的 memcpy,并使用正确的 volatile 类型用于循环中的指针。

关于c - 传递 'memcpy' 的参数 2 会丢弃来自指针目标类型的 'volatile' 限定符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36729240/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com