我在C中定义了一个静态结构,如下所示:
typedef static struct {
int a;
int b;
} Hello;
在使用它之前是否需要启动结构?如何访问其中的变量?
答案 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;