typedef intptr_t ngx_int_t;
typedef uintptr_t ngx_uint_t;
typedef intptr_t ngx_flag_t;
私たちはここから何をbenifitことができますか?私は正直に言うと1を考えることはできません...これらの `typedef`の目的は何ですか?
上記のコードでは、興味を持っている場合、それを確認し、有名なnginxのプロジェクトからです。
typedef intptr_t ngx_int_t;
typedef uintptr_t ngx_uint_t;
typedef intptr_t ngx_flag_t;
私たちはここから何をbenifitことができますか?私は正直に言うと1を考えることはできません...これらの `typedef`の目的は何ですか?
上記のコードでは、興味を持っている場合、それを確認し、有名なnginxのプロジェクトからです。
私は2つの理由を知っている:U32、でいくつか:シンプルな複雑な宣言何か
移植性の点に同意できます。しかし、最初のものです.nope – Krishnabhadra
私は人がこれを行うのを見る理由の1つは、実際のタイプを変更する必要がある場合は、typedef
を変更する必要があると考えているということです。私はあまりにもその引数についてconvinedされていません。
typedefの目的の1つは、移植性です。例えば。異なるコンパイラおよびプラットフォームは、様々な型サイズを有する。 sizeof(int)on x86、Linux、gccはテキサスインスツルメンツのプロセッサと同じではありません:)しかし、まだintです。
コードを移植するときに、
typedef int INT32
は1が保存されます。
typedefの別の目的は、より短い宣言をするために型を宣言することです。
typedef sharted_ptr<MyClass> MyClassPtr;
そして今、あなたの代わりに、全体のshared_ptr ...文字列を書き込むと、タイプとしてMyClassPtr
使用することができます。
や構造とのtypedefの非常に一般的な使用法:
typedef struct {
int x;
int y;
} Point;
または
struct point {
int x;
int y;
}
typedef struct point Point;
両方のtypedefは、あなたがstruct
キーワードを毎回入力しないようしましょう。
コードポータビリティではしばしば行われますが、特に組み込みシステムに関係します。
整数値が絶対に32ビットである必要があるとします。ネットワーク/ディスク構造にマップする必要があるかもしれません。多分、その大きさの値を保持する必要があります。
ここで、「int」が32ビットのコンパイラでコードを開発するとします。書く...
struct s {
int a,b,c,d;
}
...それはうまく動作します。あなたはintは唯一の16ビットですが、長くは32である、あなたは
まだstruct s {
long a,b,c,d;
}
さらに悪いことに、これらすべての宣言を変更する必要がありますコンパイラに切り替える必要がある場合でも、あなただけ/検索することができませんあなたがおそらくサイズについて気にしない 'ints'のいくつかのために、置き換えてください。ですから、最善のアプローチは、これまでに次のとおりです。
はtypedef long INT32; // change this typedef according to compiler
struct s {
INT32 a,b,c,d;
}
次に、あなたが必要とするすべてはのtypedefを変更することです。
コードを移植するときにポインタの型を変更したいという理由が考えられます。別のシステムでは、そこにさまざまなアドレッシングモード(「銀行」など)であるかもしれない、と彼らは複数持つ任意のシステムに、彼らは決してポートコードをした場合
typedef far intptr_t ngx_int_t;
のように、非標準的な構文を使用する必要があるかもしれません同じシステム上でアドレッシングモードを使用すると、ポインタの移植性が問題にならず、typedefが冗長になります。
http://stackoverflow.com/questions/2566027/what-is-the-use-of-typedef – Simone
申し訳ありませんが、私はこの質問の質問者がtypedefと理解していると思います。彼の質問は、 ... – Krishnabhadra
私の場合、typedefのこれらの種類のコードは醜いです...おとうさんのプログラミング.. – Krishnabhadra