如何定义静态结构并在C中访问其成员?

时间:2012-08-24 10:37:35

标签: c static struct typedef

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

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

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

4 个答案:

答案 0 :(得分:6)

您需要先定义结构,然后在静态变量

中实例化它
typedef struct {
  int a;
  int b;
} Hello;

static Hello hello;

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

hello.a = 42;

答案 1 :(得分:2)

您可以使用以下命令定义结构并同时创建实例:

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

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

但据我所知,也无法将其与typedef结合使用。

答案 2 :(得分:2)

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

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

  

存储类说明符 typedef extern 静态 自动 注册

     

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

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

答案 3 :(得分:1)

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

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

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