2

私は次の構造体を持っています:

struct A {
   struct list * (* get_items) (void);
   char * (*build) (void);
}

割り当てられた方法build(関数へのポインター) は次のとおりです。

struct A someVar = {
  .build = someBuildingFunction
};

buildどのように割り当てられるかの構文についてはわかりません。なぜドットで始まるのですか?さらに、どのようにget_items適切な関数を指すのでしょうstruct A someVarか? いくつかの方法を試しましたが、エラーが発生し続けます。

の末尾にセミコロンがないことにも気付きましたsomebuildingFunction。何故ですか?

4

1 に答える 1

5

なぜドットで始まるのですか?

指定イニシャライザと呼ばれます。

get_items を構造体 A someVar の適切な関数に向けるにはどうすればよいですか?

struct A someVar = {
  .build = someBuildingFunction,
  .get_items = someGettingFunction
};

メンバーの名前を省略して、関数名を正しい順序で配置してください。

また、somebuildingFunction の末尾にセミコロンがないことにも気付きました。何故ですか?

これは、C の初期化子では一般的です。たとえば、次のようになります。

int x[] = {
    1 /* No semicolon after 1. */
}; 
于 2012-05-21T21:19:46.213 に答える