ポインタの解説で引用が多いstrcpy()関数ですが、開発元によって違いがあるようで、興味深かったのでまとめてみました。
##strcpy.c - opensource.apple.com
strcpy.c
#import <string.h>
char *
strcpy(char *s1, const char *s2)
{
char *s = s1;
while ((*s++ = *s2++) != 0)
;
return (s1);
}
strcpy.c
#include <stddef.h>
#include <string.h>
#ifndef STRCPY
# define STRCPY strcpy
#endif
/* Copy SRC to DEST. */
char *
STRCPY (char *dest, const char *src)
{
return memcpy (dest, src, strlen (src) + 1);
}
libc_hidden_builtin_def (strcpy)
##strcpy function in string.c - tovalds/linux
string.c
char *strcpy(char *dest, const char *src)
{
char *tmp = dest;
while ((*dest++ = *src++) != '\0')
/* nothing */;
return tmp;
}
EXPORT_SYMBOL(strcpy);