答えて
C99では、使用可能な基本整数型(_tなしの型)は、実際のサイズがシステムによって異なる可能性があるため、不十分とみなされていました。
したがって、C99標準には、プログラムの移植性を高めるためのいくつかの新しい整数型の定義が含まれています。新しいタイプは、組み込み環境で特に便利です。
すべての新しいタイプは末尾に_tが付いており、すべてのシステムで一様に定義されていることが保証されています。
詳細はfixed-width integer types section of the wikipedia article on Stdintを参照してください。
'uint8_t'と' uint16_t'は確かにC99の一部です。つまり、固定サイズの必要性はC99より前であるため、独自のタイプを提供することによって、異なるコードベースがこのニーズに対応しました。 OS Xは/usr/include/MacTypes.hに 'UInt8'と' UInt16'を定義しています。 –
"新しいタイプはすべて_tで始まり、すべてのシステムで一様に定義されることが保証されています。"が真でない場合、 '(u)int_leastN_t'と'(u)int_fastN_t'があります。固定幅タイプのみを意味していました。 –
実際、すべてのシステムでサイズが同じであることについては何も言おうとしていませんでした。実際のサイズは、あなたが言及しているように、固定幅(正確な幅)タイプに対してのみ保証されています。ただし、定義はすべてのシステムで同じです。例えば、int_leastN_tは実装で利用できる最小の型であると定義されています。定義はシステムに関係なく同じです。 – vdbuilder
通常、これらはtypedefデータ型として使用されます。 "_t"はtypedefデータ型を表します。 このような名前を付けると、すべてのファイルまたは巨大なコードベースで簡単に使用して読み込むことができます。
* UINT8とuint8_t - チャー*
unit8_t unsigned char型のtypedef
* UInt16型とunit16_t *
unit16_t unsigned int型のtypedef(16ビットコンパイラに)
主な違いは、uintX_t
タイプがC99以降で定義された標準Cであり、UIntX
はそうではありません。これはコードがどのように移植可能であるかに影響します。 uintX_t
タイプを使用するコードは、標準のCコンパイラで他の依存関係なしにコンパイルできます。一方、UIntX
を使用するコードでは、それらの型自体を定義するか、そうするライブラリまたはフレームワークに依存する必要があります。
私はObjective-Cのように余分な整数型を定義しているとは思っていませんが、フレームワーク(Coacoa、OpenStep?あなたのコードがフレームワーク外で意味をなさない場合は、フレームワークコンテキストで何が慣用的であるかを使用してください。それ以外の場合は、標準タイプに固執してください。
- 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の相違点
'_t' =標準データ型のクロスプラットフォーム実装。 – sgarizvi
'_t'は 'type'の略で、Linuxシステムや' C'や 'C++'標準の多くの場所で使われている規約です。 'Uint8'と' uint8_t'の違いは実装に依存しますが、通常は両方とも8ビットの符号なし整数になります。また、 'uint8_t'と' uint16_t'は 'stdint.h'ヘッダのC(とC++の)標準で定義されています。私が知る限り、' Uint8'と 'Uint16'は非標準です。 – jcxz