我在 C 中定义了一个静态结构,如下所示:
typedef static struct {
int a;
int b;
} Hello;
我需要在使用之前启动结构吗?如何访问其中的变量?
您需要先定义结构,然后在静态变量中实例化它
typedef struct {
int a;
int b;
} Hello;
static Hello hello;
然后您可以像这样访问您的数据:
hello.a = 42;
您可以定义一个结构并同时创建一个实例:
static struct Hello {
int a,b;
} hi;
struct Hello *test() { return &hi; }
但是据我所知,没有办法将它与 a 结合起来typedef
。
存储类 ( static
) 不是类型定义的一部分。
事实上,C 标准明确禁止将(另一个)存储类放入typedef
声明中(第 6.7.1 节):
存储类说明符:typedef extern 静态 自动 寄存器
...至多,一个存储类说明符可以在声明的声明说明符中给出。
您只能制作结构类型的实际对象static
(正如其他人所指出的那样)。
如果您只想要一个结构实例,您可以使用:
static struct
{
int a;
int b;
} foo;
然后,直接访问它:foo.a = 42;