2012-12-11 7 views
14

可能性の重複:
Why does glib redefine types?Glibのデータ型を使う方が良いのはなぜですか?(例えば、 `int`ではなく` gint`)?

GTK + 2.0チュートリアルで

、私はデータタイプについてhere次の文を読むことができます:

は、いくつかの事、おそらくあなたは

あります。説明が必要な前述の例で気づいた。表示されるgint、gcharなどは、それぞれGLibシステムの一部であるint型とchar型のtypedefです。 これは、計算を行う際に単純なデータ型のサイズに厄介な依存関係を回避するために行われます。

この説明の最後の部分はわかりません。なぜGlibデータ型を使うのが良いですか?

答えて

9

チュートリアルで言われているように、移植性を確保することです。新しいシステムでglibを使用するコードをビルドするときは、そのタイプを使用するコードではなく、typedefでヘッダーファイルを変更するだけで済みます。

C99標準では、glibタイプは廃止されましたがglibはC99規格よりも前の固定幅タイプ(int8_t、uint32_tなど)が追加されています。これはおそらく独自のタイプのセットを持っています。

+2

を提供することによって、彼らは時代遅れになり、私は例えば... GINTとgcharを理解してきたものである移植性のためだけの役に立ちません。 glibによって追加されたgint32とすべての固定サイズのデータ​​型だけが、必要な最小サイズを持つ変数を保証するため、C99標準よりも面白かったです。私は正しい? – remjg

+0

あなたは正しいかもしれません。人々が頼りにしている可能性はありますが特定のサイズ、少なくとも32ビットなどのものが必要です。要は、int型を使用するコード内のすべての場所を変更するのではなく、そのような要件を満たすように単一のtypedefを変更する方が簡単です。 – Michael

+0

あなたは正しいです、 'gint'と' gchar'は特定のサイズであると定義されていないので、それらを使う理由はありません。以下のコメントも参照してください:http://stackoverflow.com/questions/2800310/converting-an-array-of-characters-to-a-const-gchar/2800318#2800318 – ptomato

3

Cデータ型、例えばint型のための高度にプラットフォームおよび実装固有 レジスタの大きされている、 チャーはバイトと同じくらいのビットを有する有し、長い のみINT 短いintは、少なくとも2よりも小さくないことを意味実際には整数よりも小さくする必要はありません。

したがって、適切な名前の短い変数を使用すると、移植性が向上します。

とGTK 2.0チュートリアルがそれを置くように:

好例は、それが64ビットアルファであるかどうか、任意のプラットフォーム用の32ビット整数にtypedefされます「gint32」であり、または32ビットi386。 typedefは非常に簡単で直感的です。それらはすべてglib/glib.h(gtk.hからインクルードされる)で定義されています。

編集:マイケルが言ったようにC99標準ではここで、新しいタイプ

関連する問題