代码之家  ›  专栏  ›  技术社区  ›  icktoofay pcp

string.h和strings.h之间的差异

  •  85
  • icktoofay pcp  · 技术社区  · 14 年前

    我注意到(至少在Mac OS X上)两者都是 string.h 标题和A strings.h 标题。 man 3 string 显示它们包含不同的功能。有什么理由吗?

    2 回复  |  直到 9 年前
        1
  •  105
  •   AProgrammer    14 年前

    strings.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);
    
        2
  •  17
  •   Paul R    14 年前

    通常 <strings.h> 只需向标准头添加一些有用但非标准的附加字符串函数 <string.h> . 为了实现最大的可移植性,您应该只使用 <字符串.h> 但是如果你需要 <字符串。h> 除了你需要的可移植性之外,你还可以使用 <字符串。h> 而不是 <字符串.h> .