wikibooks.orgでパブリック ドメインの実装を見ていました。次のように memmove() を実装し、「完全に移植可能ではない」ことを明示的に述べています。なぜだろうと思っていました:
- かっこはコードの最初の行に配置され、
- コードは完全に移植可能ではありません。
コードは次のとおりです。
void *(memmove)(void *s1, const void *s2, size_t n)
{
char *p1 = s1;
const char *p2 = s2;
if (p2 < p1 && p1 < p2 + n) {
/* do a descending copy */
p2 += n;
p1 += n;
while (n-- != 0)
*--p1 = *--p2;
} else
while (n-- != 0)
*p1++ = *p2++;
return s1;
}