私はaircrack-ngのソースコードを読んでいて、structのさまざまな使用法に気づきました。例えば:
構造体オプション{...}opt;
typedefstruct{...}投票;
構造体の一般的な形式は
struct var {...};
また
typedef struct var {...} foo;
目的は何opt
ですか?また、vote
なぜタイプが定義されていないのですか?
typedef
タイプエイリアスを作成します。と:
typedef struct { /* ... */ } vote;
エイリアスである匿名構造を作成しますvote
。
struct option { /* ... */ } opt;
型と型struct option
の変数を宣言します。opt
struct option
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;
}
struct
タイプ定義は、特に名前struct
が非常に長く、名前を短い名前に変更する場合に、名前のエイリアスを提供します。
あなたが持っていると言う
struct very_large_screen_metrics_info{};
後で名前を変更できます:
typedef struct very_large_screen_metrics_info screen_info;
定義で起こったstruct
ことは、型定義が構造定義とともに提供されるということです。したがって、この例の命名規則は完全に有効であり、通常の命名規則に代わるものです。タイプはあなたが期待するようopt
であり、vote