[c] <string.h>와 <strings.h>의 차이점

나는 (적어도 Mac OS X에서는) <string.h>헤더와 헤더가 모두 있다는 것을 알았습니다 <strings.h>. man 3 string다른 기능을 포함하고 있음을 보여줍니다. 이것에 대한 이유가 있습니까?



답변

strings.h는 유닉스 진화의 BSD 브랜치에서 나왔습니다. 그 내용은 POSIX에 의해 표준화되었지만 대부분은 레거시로 표시되며 다른 기능으로 쉽게 대체 할 수 있습니다.

int    bcmp(const void *, const void *, size_t); /* LEGACY, see memcmp */
void   bcopy(const void *, void *, size_t); /* LEGACY, see memcpy, memmove */
void   bzero(void *, size_t); /* LEGACY, see memset */
int    ffs(int);
char  *index(const char *, int); /* LEGACY, see strchr */
char  *rindex(const char *, int); /* LEGACY, see strrchr */
int    strcasecmp(const char *, const char *);
int    strncasecmp(const char *, const char *, size_t);


답변

일반적으로 <strings.h>유용하지만 비표준적인 추가 문자열 함수를 표준 헤더에 추가합니다 <string.h>. 최대한의 이식성을 위해 사용해야 <string.h>하지만 <strings.h>이식성이 필요한 것보다 더 많은 기능 이 필요한 경우 <strings.h>대신 사용할 수 있습니다 <string.h>.


답변