我在技术书中找到了以下示例
struct {
tBoolean logON;
static enum eLogLevel outputLevel[NUM_LOG_SUBSYSTEM];
} sLogStruct;
static struct sLogStruct gLogData;
但我对结构声明的优点感到困惑,正式地说,应该是
struct name {
...
}
事实上,我做了一些试验,编译器在语句中出现错误(我真的尝试使用标准类型,而不是像 sLogStruct 那样)
static struct sLogStruct gLogData;
我怀疑是对,代码有问题吗?
此外,我想了解结构中 static 类存储的含义和范围,因为我没有找到任何令人满意的解释。让我们有像这样的结构声明
struct myStruct {
int Foo;
static int sFoo;
} strA, strB;
strA 和 strB 是否有两个彼此独立的静态变量?
答案 0 :(得分:1)
我怀疑是对,代码有问题吗?
是的,不知何故,代码有问题。
让我们仔细看看:
struct {
tBoolean logON;
static enum eLogLevel outputLevel[NUM_LOG_SUBSYSTEM];
} sLogStruct;
我们假设您在某处定义了成员的类型。
您声明了一个未命名的结构类型,并定义该类型的变量 sLogStruct
。
没有结构标记和没有类型名称已定义。
static struct sLogStruct gLogData;
由于没有类型struct sLogStruct
,您无法定义该类型的变量。
此外,我想了解结构中静态类存储的含义和范围,因为我没有找到任何令人满意的解释。
没有任何意义。对于struct成员,添加static
关键字没有任何意义,并且不允许这样做。
答案 1 :(得分:0)
struct
的代码名称是可选的。
例如,以下内容将声明两个未命名s1
类型的变量(s2
,struct
):
struct
{
int a;
} s1, s2;
void f()
{
s1.a = 3;
s2.a = 5;
}