2

私はaircrack-ngのソースコードを読んでいて、structのさまざまな使用法に気づきました。例えば:

構造体オプション{...}opt;

typedefstruct{...}投票;

構造体の一般的な形式は

struct var {...};

また

typedef struct var {...} foo;

目的は何optですか?また、voteなぜタイプが定義されていないのですか?

4

3 に答える 3

4

typedefタイプエイリアスを作成します。と:

typedef struct { /* ... */ } vote;

エイリアスである匿名構造を作成しますvote

struct option { /* ... */ } opt;

型と型struct optionの変数を宣言します。optstruct option

于 2013-01-07T18:21:50.527 に答える
2

Cでは、変数を作成する方法は次のとおりです。

<type>  <variable-name>;

これは次のようなもので明らかです:

int foo;

あまり明白ではありませんが、それはとまったく同じです

struct option {...} opt;

タイプはstruct option {...}、で、変数名は。ですopt

したがって、この行optは、すべてのメンバーが記述された構造体である、という名前の変数を作成するだけです。

その行の後に、構造も記述したoptionので、構造のメンバーを再記述せずにその名前を再利用できます。

{
    /* make structure, and variable opt */
    struct option { int alpha; int beta; } opt;

    /* Use the structure previously defined */
    struct option second_opt;
}
于 2013-01-07T18:21:08.807 に答える
0

structタイプ定義は、特に名前structが非常に長く、名前を短い名前に変更する場合に、名前のエイリアスを提供します。

あなたが持っていると言う

struct very_large_screen_metrics_info{};

後で名前を変更できます:

typedef struct very_large_screen_metrics_info screen_info;

定義で起こったstructことは、型定義が構造定義とともに提供されるということです。したがって、この例の命名規則は完全に有効であり、通常の命名規則に代わるものです。タイプはあなたが期待するようoptであり、vote

于 2013-01-07T18:25:14.913 に答える