Unterschied zwischen und

Lesezeit: 2 Minuten

Benutzeravatar von icktoofay
icktoofay

Mir ist aufgefallen, dass es (zumindest unter Mac OS X) sowohl a <string.h> Kopfzeile und a <strings.h> Header. man 3 string zeigt, dass sie unterschiedliche Funktionen enthalten. Gibt es dafür einen Grund?

  • Für das, was es wert ist, OS X strings.h enthält nicht standardmäßige Funktionen bcmp bcopy bzero ffs index rindex strcasecmp strncasecmp… und das ist es.

    – Kartoffelklatsche

    27. November 2010 um 10:28 Uhr

  • @Potatoswatter: Es tut genau das, was von POSIX angegeben wird.

    – R.. GitHub HÖR AUF, EIS ZU HELFEN

    27. November 2010 um 14:18 Uhr

strings.h stammt aus dem BSD-Zweig der Unix-Evolution. Sein Inhalt wurde von POSIX standardisiert, aber das meiste davon ist als Legacy gekennzeichnet und kann leicht durch andere Funktionen ersetzt werden:

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);

  • Einige C-Standardbibliotheken haben die nicht veralteten Funktionen von zusammengeführt strings.h hinein string.h. Siehe zB Glibc.

    – Entropo

    28. April 2011 um 15:34 Uhr

  • Eine wichtige Funktion von strings.h, die jetzt in glibc string.h vorhanden ist, ist explicit_bzero. z.B github.com/bminor/glibc/blob/master/string/explicit_bzero.c

    – angstyloop

    13. August um 22:32 Uhr


Typisch <strings.h> fügt dem Standard-Header lediglich einige nützliche, aber nicht standardmäßige zusätzliche Zeichenfolgenfunktionen hinzu <string.h>. Für maximale Portabilität sollten Sie nur verwenden <string.h> aber wenn du die funktionen brauchst <strings.h> mehr als Sie Portabilität brauchen, dann können Sie verwenden <strings.h> Anstatt von <string.h>.

  • Ich würde die Beschreibung dieser Funktionen als “nützlich” in Frage stellen. Die meisten von ihnen sind hässliche BSD-Duplikate von Standard-ANSI/ISO-C-Funktionen mit unterschiedlichen Namen. Die Vergleichsfunktionen ohne Berücksichtigung der Groß-/Kleinschreibung für Byte-Strings sind (im Sinne der plattformübergreifenden Zuverlässigkeit) bei modernen UTF-8-Strings wahrscheinlich nicht nützlich, und selbst wenn sie “funktionieren”, bieten sie wahrscheinlich nicht die Semantik, die der Programmierer wünscht. Nur ffs ist evtl. nützlich.

    – R.. GitHub HÖR AUF, EIS ZU HELFEN

    27. November 2010 um 14:20 Uhr


  • @R.: Sie sind nützlich, wenn Sie älteren BSD-Code kompilieren müssen, der diese Funktionen verwendet. 😉

    – PaulR

    27. November 2010 um 14:22 Uhr

1420620cookie-checkUnterschied zwischen und

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy