UInt8
とuint8_t
、またはUInt16
とunit16_t
の違いは何ですか?
_t
は何を意味しますか?
C99では、使用可能な基本整数型(_tのないもの)は、システムごとに実際のサイズが異なるため、不十分であると見なされていました。
そのため、C99標準には、プログラムの移植性を高めるためのいくつかの新しい整数型の定義が含まれています。新しいタイプは、組み込み環境で特に役立ちます。
すべての新しいタイプには接尾辞_tが付いており、すべてのシステムで均一に定義されることが保証されています。
詳細については、ウィキペディアのStdintに関する記事の 固定幅整数型セクション を参照してください。
主な違いは、uintX_t
型はC99以降で定義されている標準Cであるのに対し、UIntX
はそうではないことです。これは、コードの移植性に影響を及ぼします。 uintX_t
型を使用したコードは、他の依存関係なしに標準Cコンパイラでコンパイルできます。一方、UIntX
を使用するコードは、それらのタイプ自体を定義するか、そうするライブラリまたはフレームワークに依存する必要があります。
Objective-C自体が追加の整数型を定義するとは思いませんが、フレームワーク(Coacoa、OpenStep?)で定義されている可能性があります。コードがフレームワーク外で意味をなさない場合は、フレームワークコンテキストで慣用的なものを使用します。それ以外の場合は、標準タイプに固執しようとします。
通常、それらはtypedefデータ型として使用されます。 「_t」はtypedefデータ型を表します。すべてのファイルまたは巨大なコードベースで簡単に使用および読み取りできるように、このような名前を付けています。
* UInt8およびuint8_t-Char *
typedef unit8_t unsigned char
* UInt16およびunit16_t *
typedef unit16_t unsigned int(16ビットコンパイラーの場合)