Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

memcpy in string.h

Name: Anonymous 2013-05-25 16:01

$ man memcpy
MEMCPY(3)                          Linux Programmer's Manual                         MEMCPY(3)



NAME
       memcpy - copy memory area

SYNOPSIS
       #include <string.h>


Why the fuck is memcpy in string.h? It is not exclusively for dealing with strings, shouldn't it be with malloc, exit & co. in stdlib.h?

I'm aware that this is because of the ISO specification, and that it is probably like this for historical reasons, but what are those historical reasons?

Name: Anonymous 2013-05-27 10:57

>>23
Is this better? From Solaris 11:

$ cat /usr/include/memory.h
/*      Copyright (c) 1988 AT&T */
/*        All Rights Reserved   */


#ifndef _MEMORY_H
#define _MEMORY_H

#include <sys/types.h>

#ifdef  __cplusplus
extern "C" {
#endif

#if defined(__STDC__)
extern void *memccpy(void *, const void *, int, size_t);
#if __cplusplus >= 199711L
namespace std {
extern const void *memchr(const void *, int, size_t);
#ifndef _MEMCHR_INLINE
#define _MEMCHR_INLINE
extern "C++" {
        inline void *memchr(void * __s, int __c, size_t __n) {
                return (void*)memchr((const void *) __s, __c, __n);
        }
}
#endif /* _MEMCHR_INLINE */
} /* end of namespace std */
using std::memchr;
#else
extern void *memchr(const void *, int, size_t);
#endif
extern void *memcpy(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern int memcmp(const void *, const void *, size_t);
#else
extern void *memccpy();
extern void *memchr();
extern void *memcpy();
extern void *memset();
extern int memcmp();
#endif

#ifdef  __cplusplus
}
#endif

#endif  /* _MEMORY_H */

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List