Ich bemerkte, dass es (zumindest unter Mac OS X) sowohl einen <string.h>
Header als auch einen <strings.h>
Header gab. man 3 string
zeigt, dass sie unterschiedliche Funktionen enthalten. Gibt es einen Grund dafür?
90
Ich bemerkte, dass es (zumindest unter Mac OS X) sowohl einen <string.h>
Header als auch einen <strings.h>
Header gab. man 3 string
zeigt, dass sie unterschiedliche Funktionen enthalten. Gibt es einen Grund dafür?
strings.h
enthält OS X nicht standardmäßige Funktionenbcmp bcopy bzero ffs index rindex strcasecmp strncasecmp
… und das war's.Antworten:
strings.h stammt aus dem BSD-Zweig in der Unix-Evolution. Der Inhalt wurde von POSIX standardisiert, der größte Teil ist jedoch als Legacy gekennzeichnet und kann problemlos durch andere Funktionen ersetzt werden:
quelle
strings.h
in zusammengeführtstring.h
. Siehe z . B. Glibc .Fügt
<strings.h>
dem Standard-Header normalerweise nur 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 Sie die Funktionen in<strings.h>
mehr benötigen, als Sie Portabilität benötigen, können Sie<strings.h>
stattdessen verwenden<string.h>
.quelle
ffs
ist möglicherweise nützlich.