我注意到(至少在Mac上)同时有一个<string.h>头和一个<strings.h>头。man 3 string透露,它们包含不同的功能。这有什么原因吗?
发布于 2010-11-27 19:10:24
H来自unix演进中的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);发布于 2010-11-27 18:28:31
通常,<strings.h>只是在标准的头文件<string.h>中添加一些有用但非标准的附加字符串函数。为了获得最大的可移植性,您应该只使用<string.h>,但是如果您对<strings.h>中的函数的需求超过了对可移植性的需求,那么您可以使用<strings.h>而不是<string.h>。
https://stackoverflow.com/questions/4291149
复制相似问题