Реализация memcmp

Ниже представлена ​​реализация 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));
}

Она в основном выполняет побайтовое сравнение.

Мой вопрос состоит из двух частей:

  1. Есть ли какие-нибудь причина не изменять это значение на int путем сравнения int до count , а затем побайтово сравнивать то, что осталось?
  2. Если бы я сделал 1, есть ли потенциал / очевидные проблемы?

Примечания: Я вообще не использую CRT, поэтому мне все равно нужно реализовать эту функцию. Мне просто нужен совет, как ее правильно реализовать.

5
задан CashCow 16 February 2011 в 15:46
поделиться