1

我在 C 中定义了一个静态结构,如下所示:

typedef static struct {
    int a;
    int b;
} Hello;

我需要在使用之前启动结构吗?如何访问其中的变量?

4

4 回答 4

7

您需要先定义结构,然后在静态变量中实例化它

typedef struct {
  int a;
  int b;
} Hello;

static Hello hello;

然后您可以像这样访问您的数据:

hello.a = 42;
于 2012-08-24T10:41:29.533 回答
2

您可以定义一个结构并同时创建一个实例:

static struct Hello {
  int a,b;
} hi;

struct Hello *test() { return &hi; }

但是据我所知,没有办法将它与 a 结合起来typedef

于 2012-08-24T10:43:32.967 回答
2

存储类 ( static) 不是类型定义的一部分。

事实上,C 标准明确禁止将(另一个)存储类放入typedef声明中(第 6.7.1 节):

存储类说明符typedef extern 静态 自动 寄存器

...至多,一个存储类说明符可以在声明的声明说明符中给出。

您只能制作结构类型的实际对象static(正如其他人所指出的那样)。

于 2012-08-24T11:04:04.373 回答
1

如果您只想要一个结构实例,您可以使用:

static struct
{
    int a;
    int b;
} foo;

然后,直接访问它:foo.a = 42;

于 2016-02-04T12:22:00.813 回答