4

タイトルは少し誇張されていますが、まだわかりません。

最も基本的な例として、次のsize_tタイプを使用しtime.hます。

size_t <...>は、(とりわけ)ヘッダーファイルで符号なし整数型として定義されています。

unsigned int名前を変更することのポイントは何size_tですか?このようなことは、コードの名前が変更された基本的な型や、クラスや構造体であっても、開発者がそれらの型宣言を探して理解できるようにするため、コードを理解しにくくすることがよくあります。それでも、これはさまざまなライブラリで多く行われていると思います。

4

4 に答える 4

14

unsigned intの名前をsize_tに変更することのポイントは何ですか?そのようなことはしばしばコードを理解するのを難しくします

  1. コードが理解しやすくなり、オブジェクトが何を表しているのかがすぐにわかります。「それはある種のサイズです」。それを裸と比較してくださいint。実際の基礎となるタイプは、当面の懸念事項ではありません。それを知らない限り、コードは移植性を維持します。

  2. 今日はそうunsigned intかもしれませんが、明日はそうなるでしょうunsigned long long。プログラムが適切なタイプを使用している限り、将来にわたって利用できます。

それらは開発者にそれらの型宣言を探させます

見ないでください:あなたはそれを使って携帯性のないことをしたくなるでしょう。C++と同じように考えてくださいstd::string。あなたはそれが何をするのか、それを使う方法を知っていますが、中に何が入っているのか本当にわかりません。

于 2012-08-25T13:38:08.167 に答える
11

size_tは、移植性を確保するために使用されます。size_tは常に「unsignedint」であるとは限りませんが、特定のプラットフォームで可能な最大のオブジェクトを表すことができるサイズです。

于 2012-08-25T13:37:21.137 に答える
2

標準Cライブラリなどの低レベルライブラリの場合、typedefユーザープログラムの移植性を高めるために重要です。議論はありません。

一方、プログラムでエイリアスを使用することは興味深い質問です。基本的に2つの理由があります:

  • 式を単純化するため。たとえば、関数へのポインタや集合体。
  • 抽象化を導入します。
于 2012-08-25T14:07:40.193 に答える
0

その理由は、型が変数が何を表すかについてより良い手がかりを与えることができるからです。intが配置されている場合に束を見るだけでなく、std :: size_t、std::ptrdiff_tなどのタイプで何が起こっているかを詳しく知ることができます。

于 2012-08-26T20:20:51.893 に答える