以下是 memcmp 的 Microsoft CRT 实现:
int memcmp(const void* buf1,
const void* buf2,
size_t count)
{
if(!count)
return(0);
while(--count && *(char*)buf1 == *(char*)buf2 ) {
buf1 = (char*)buf1 + 1;
buf2 = (char*)buf2 + 1;
}
return(*((unsigned char*)buf1) - *((unsigned char*)buf2));
}
它基本上执行逐字节比较。
我的问题分为两部分:
- 是否有任何理由不将其更改为 int by int 比较 until
count < sizeof(int)
,然后对剩余的内容进行逐字节比较? - 如果我要做 1,是否有任何潜在/明显的问题?
注意:我根本没有使用CRT,所以无论如何我必须实现这个功能。我只是在寻找有关如何正确实施它的建议。