나는 (적어도 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>
.