string.h
ヘッダーとstrings.h
ヘッダーの両方が(少なくともMac OS Xでは)存在していました。 man 3 string
は、それらが異なる機能を含むことを明らかにする。これには何らかの理由がありますか?string.hとstrings.hの相違点
答えて
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);
+1。 –
いくつかのC標準ライブラリは 'strings.h'の廃止されていない関数を' string.h'にマージしました。たとえば、[Glibc](http://www.gnu.org/software/libc/manual/html_mono/libc.html#String_002fArray-Comparison)を参照してください。 – entropo
通常、<strings.h>
は、標準ヘッダー<string.h>
にいくつかの便利で非標準の追加の文字列関数を追加します。ポータビリティを最大限に引き出すには、<string.h>
しか使用しないでください。<strings.h>
以上の機能が必要な場合は、<string.h>
の代わりに<strings.h>
を使用してください。
私はこれらの機能の説明を「役に立つ」と質問します。それらのほとんどは、異なる名前の標準ANSI/ISO C関数の醜いBSD複製です。大文字と小文字を区別しないバイト文字列の比較関数は、(クロスプラットフォームの信頼性の点で)おそらく現代のUTF-8文字列では役に立たないでしょうし、プログラマが望むセマンティクスを提供しないかもしれません。おそらく 'ffs'だけが役に立つかもしれません。 –
@R:これらの関数を使用するコンパイル用のレガシーBSDコードがある場合に便利です。 ;-)適切な名前の代わりに –
- 1. importとconstとの相違点とcommonjsでの相違点
- 2. =と:=の相違点
- 3. PHPUnitとPHPSpecの相違点と相違点
- 4. MSBuildとTFSBuildの相違点
- 5. NSArrayとNSMutableArrayの相違点
- 6. System.Web.CacheとHTTPContext.Curent.Cacheの相違点
- 7. saveとsave_model()の相違点
- 8. ディスパッチキューとNSOperationQueueの相違点
- 9. HTML5とjQueryの相違点
- 10. QtGui.QApplicationとQtCore.QCoreApplicationの相違点
- 11. CDO.MessageとSystem.Net.Mailの相違点
- 12. TransactionとTransactionScopeの相違点
- 13. addonGlobalLayoutListenerとaddOnPreDrawListenerの相違点
- 14. getGenericParameterTypesとgetParameterTypesの相違点
- 15. vmlinuxとvmlinux.oの相違点
- 16. KeyEventArgs.systemKeyとKeyEventArgs.Keyの相違点
- 17. Thread.sleep()とTimeUnit.SECONDS.sleep()の相違点
- 18. レポートとサブレポートの相違点
- 19. MPI_ScatterとMPI_Bcastの相違点
- 20. V8とECMAScriptの相違点
- 21. カーネルモードとドライバの相違点
- 22. アルゴリズムとメソッドの相違点
- 23. mysql_num_rowsとmysql_affected_rowsの相違点
- 24. modelAttributeとcommandNameの相違点
- 25. システムとshell_execの相違点
- 26. 'コミット'と 'リビジョン'の相違点
- 27. 'コンポーネントアーキテクチャ'と 'モジュラアーキテクチャ'の相違点
- 28. scipy.spatial.KDTreeとscipy.spatial.cKDTreeの相違点
- 29. readFileとreadFileSyncの相違点
- 30. .classpathとMANIFEST.MFの相違点
、OS X 'strings.h'は' BCMP BCOPY BZERO非標準機能が含まれていますffsインデックスrindex strcasecmp strncasecmp' ...それだけです。 – Potatoswatter
@Potatoswatter:これはPOSIXで指定されているものとまったく同じです。 –