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. IE標準、相違点および相違点の相違点
- 2. importとconstとの相違点とcommonjsでの相違点
- 3. =と:=の相違点
- 4. PHPUnitとPHPSpecの相違点と相違点
- 5. CBUUIDとNSUUIDの相違点
- 6. NSTimeZoneとGMTの相違点
- 7. ListViewとArrayListの相違点
- 8. pictureBox.Update()とpictureBox.Refresh()の相違点
- 9. ApplicationContextInitializerとBeanFactoryPostProcessorの相違点
- 10. システムとshell_execの相違点
- 11. AsyncSocketとAsyncUdpSocketの相違点
- 12. .textと.get_text()の相違点
- 13. plt.close()とplt.clf()の相違点
- 14. `BeginSubscribeToStreamingNotifications`と` SubscribeToStreamingNotifications`の相違点
- 15. Delegate.InvokeとDelegateの相違点
- 16. InternalResourceViewResolverとUrlBasedViewResolverの相違点
- 17. tf.nn.convolutionとtf.nn.conv2dの相違点
- 18. Backbone.Layout.extendとBackbone.view.extendの相違点
- 19. JavaとMacOSの相違点
- 20. Yocto:CORE_IMAGE_EXTRA_INSTALLとIMAGE_INSTALLの相違点
- 21. window.someRandomVarとsomeRandomVarの相違点
- 22. CDRとxDRの相違点
- 23. gst_bus_add_watch()とg_signal_connect()の相違点
- 24. EventStreamとEventBusの相違点
- 25. System.Threading.Tasks.DataflowとMicrosoft.Tpls.Dataflowの相違点
- 26. mkfifo()とmknod()の相違点
- 27. java.homeとJAVA_HOMEの相違点
- 28. $ httpParamSerializerJQLikeと$ httpParamSerializerの相違点
- 29. doAfterTerminateとdoFinallyの相違点
- 30. Boost.CoroutineとBoost.Coroutine2の相違点
、OS X 'strings.h'は' BCMP BCOPY BZERO非標準機能が含まれていますffsインデックスrindex strcasecmp strncasecmp' ...それだけです。 – Potatoswatter
@Potatoswatter:これはPOSIXで指定されているものとまったく同じです。 –