static struct astr {
int a;
};
static const struct astr newastr = {
.a = 9,
};
我得到:警告:空声明中无用的存储类说明符
如果我将其更改为
static struct astr {
int a;
} something;
然后将修复警告。
以下内容也不会发出该警告
struct astr {
int a;
};
static const struct astr newastr = {
.a = 9,
};
有人可以解释这是怎么回事吗?
static struct s {
int a;
};
相当于:
struct s {
int a;
};
它定义了结构s
,但未声明任何变量。也就是说,没有与之关联的存储,因此没有可将static
应用于的内容。
但是如果您这样做:
static struct s { int a; } x;
然后没有警告,因为除了定义结构x
外,您还声明了变量s
,因此static
适用于x
。
类似地,如果先前已定义struct s
,则可以执行:
static struct s x;
没有警告。当然,如果需要,您可以选择提供初始化程序。