我看了文章Optimizing Memcpy improves speed,我對修改後的GNU算法有疑問,運行代碼時出錯src & 0xFFFFFFFC,src是一個void指針,它可以是左邊的「&」的操作數?我在這裏錯過了什麼嗎?關於修改GNU算法的問題
感謝
錯誤1錯誤C2296:「&」:非法的,左邊的操作數的類型「常量無效*」
void * memcpy(void * dst, void const * src, size_t len)
{
long * plDst = (long *) dst;
long const * plSrc = (long const *) src;
if (!(src & 0xFFFFFFFC) && !(dst & 0xFFFFFFFC))
{
while (len >= 4)
{
*plDst++ = *plSrc++;
len -= 4;
}
}
char * pcDst = (char *) plDst;
char const * pcSrc = (char const *) plSrc;
len += 4;
while (len--)
{
*pcDst++ = *pcSrc++;
}
return (dst);
}
要知道,對於一個在PC機上GCC明白基本* *的memcpy定義不夠好,它就會發出代碼以時間來寫多頭,而雙多頭,如果你告訴它,它可以使用MMX。 – 2010-07-09 07:07:21