gpt4 book ai didi

c - 静态结构警告空声明中无用的存储类说明符

转载 作者:行者123 更新时间:2023-12-02 19:35:35 32 4
gpt4 key购买 nike

  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;

那么就不会出现警告,因为除了定义结构 s 之外,您还声明了变量 x,因此 static 适用于 x.

类似地,如果之前已经定义了struct s,则可以执行以下操作:

static struct s x;

没有任何警告。当然,如果需要,您可以选择提供初始化程序。

关于c - 静态结构警告空声明中无用的存储类说明符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61079305/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com