Percebi que havia (pelo menos no Mac OS X) um <string.h>
cabeçalho e um <strings.h>
cabeçalho. man 3 string
revela que eles contêm funções diferentes. Existe alguma razão para isso?
90
Percebi que havia (pelo menos no Mac OS X) um <string.h>
cabeçalho e um <strings.h>
cabeçalho. man 3 string
revela que eles contêm funções diferentes. Existe alguma razão para isso?
strings.h
contém funções fora do padrãobcmp bcopy bzero ffs index rindex strcasecmp strncasecmp
... e é isso.Respostas:
strings.h vem do ramo BSD na evolução unix. Seu conteúdo foi padronizado por POSIX, mas a maior parte dele é marcado como legado e pode ser facilmente substituído por outras funções:
fonte
strings.h
emstring.h
. Veja, por exemplo, Glibc .Normalmente,
<strings.h>
apenas adiciona algumas funções de string adicionais úteis, mas não padrão, ao cabeçalho padrão<string.h>
. Para máxima portabilidade, você só deve usar,<string.h>
mas se precisar das funções<strings.h>
mais do que precisa de portabilidade, você pode usar em<strings.h>
vez de<string.h>
.fonte
ffs
é possivelmente útil.