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 指向 struct 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 回答