1. ホーム
  2. c

[解決済み】_t(アンダースコア-t)が続く型は何を表すのですか?

2022-03-28 14:10:02

質問

簡単な質問のようですが、Stack Overflowの検索やGoogleで調べても出てきません。型に続いて _t の意味は?例えば

int_t anInt;

ハードウェアと密接に関係するC言語のコードでよく見かけるので、両者は関連していると思わざるを得ません。

どうすれば解決するの?

Douglas Mayleが指摘するように、基本的には型名を表します。 したがって、変数名や関数名の最後に ' _t というのは、混乱を招く可能性があるからです。 と同様に size_t C89規格では wchar_t , off_t , ptrdiff_t その他、忘れてしまったものもあります。 C99規格では、次のような余分な型がたくさん定義されています。 uintptr_t , intmax_t , int8_t , uint_least16_t , uint_fast32_t といった具合です。 これらの新しい型は、正式には <stdint.h> を使用することが多いのですが、ほとんどの場合 <inttypes.h> これは、(標準的なCのヘッダーとしては珍しく、)以下のものを含んでいます。 <stdint.h> . それは( <inttypes.h> ) で使用するためのマクロも定義しています。 printf()scanf() .

Matt Curtisが指摘したように、サフィックスにはコンパイラにとって何の意味もなく、人間本位の慣習である。

ただし、以下の点にも注意が必要です。 POSIX で終わる多くの余分な型名が定義されています。 _t '、そして というサフィックスを予約します。 を実装することができます。 つまり、POSIX関連のシステムで作業している場合、この規約で独自の型名を定義するのは得策ではありません。 私が働いているシステムは(20年以上)そうしてきました。私たちが定義しているのと同じ名前の型を定義しているシステムによって、定期的につまづくことがあります。