web-dev-qa-db-ja.com

UInt8とuint8_tの違いは何ですか

UInt8uint8_t、またはUInt16unit16_tの違いは何ですか?

_tは何を意味しますか?

38
user1845029

C99では、使用可能な基本整数型(_tのないもの)は、システムごとに実際のサイズが異なるため、不十分であると見なされていました。

そのため、C99標準には、プログラムの移植性を高めるためのいくつかの新しい整数型の定義が含まれています。新しいタイプは、組み込み環境で特に役立ちます。

すべての新しいタイプには接尾辞_tが付いており、すべてのシステムで均一に定義されることが保証されています。

詳細については、ウィキペディアのStdintに関する記事の 固定幅整数型セクション を参照してください。

38
vdbuilder

主な違いは、uintX_t型はC99以降で定義されている標準Cであるのに対し、UIntXはそうではないことです。これは、コードの移植性に影響を及ぼします。 uintX_t型を使用したコードは、他の依存関係なしに標準Cコンパイラでコンパイルできます。一方、UIntXを使用するコードは、それらのタイプ自体を定義するか、そうするライブラリまたはフレームワークに依存する必要があります。

Objective-C自体が追加の整数型を定義するとは思いませんが、フレームワーク(Coacoa、OpenStep?)で定義されている可能性があります。コードがフレームワーク外で意味をなさない場合は、フレームワークコンテキストで慣用的なものを使用します。それ以外の場合は、標準タイプに固執しようとします。

0
harald

通常、それらはtypedefデータ型として使用されます。 「_t」はtypedefデータ型を表します。すべてのファイルまたは巨大なコードベースで簡単に使用および読み取りできるように、このような名前を付けています。

* UInt8およびuint8_t-Char *

typedef unit8_t unsigned char

* UInt16およびunit16_t *

typedef unit16_t unsigned int(16ビットコンパイラーの場合)

0
PKS