鑑於此代碼:解決C++「分配的對象不是一個真正的左值」的錯誤
void FrMemCopy(void *to, const void *from, size_t sz)
{
size_t sz8 = sz >> 3;
size_t sz1 = sz - (sz8 << 3);
while (sz8-- != 0) {
*((double *)to)++ = *((double *)from)++;
}
while (sz1-- != 0) {
*((char *)to)++ = *((char *)from)++;
}
}
我收到的2線while
環內target of assignment not really an lvalue
警告。
任何人都可以分解這些線?
一個演員然後增加?
什麼是最簡單的寫法?
錯誤是什麼意思?
簡單的方法是的memcpy(於從,SZ ) – stark
代碼試圖通過使用'double'來一次複製8個字節,而不是一次只複製一個字節。代碼存在多個問題。它假定地址是8字節對齊的。然後它用表情快速鬆弛。坦率地說,你會用'的memmove()'或'的memcpy()'做的更好,但如果你必須發揮這種方式(並且可以與地址對齊約束,或總線錯誤或表現欠佳生活,當你得到的約束錯) ,那麼現在有幾個答案看起來好像他們做對了。 –
@Jonathan,謝謝,這是有益的 – Jason