编译器错误:";预期的&引用;C结构中的错误
我正在尝试使用以下语法将结构添加到我的程序中:编译器错误:";预期的&引用;C结构中的错误,c,struct,syntax,C,Struct,Syntax,我正在尝试使用以下语法将结构添加到我的程序中: struct foo { char bar[] = "baz"; char qux[] = "abc"; /* and so on */ }; 出于某种原因,struct中的每个变量声明都有一个错误,说明我必须添加分号,并且似乎陷入了一种循环。建议的语法类似于 struct foo { char bar[]; =; ;;;;;;/* infinite semicolons */"baz"; } 这是我第一次犯这种
struct foo {
char bar[] = "baz";
char qux[] = "abc";
/* and so on */
};
出于某种原因,struct
中的每个变量声明都有一个错误,说明我必须添加分号,并且似乎陷入了一种循环。建议的语法类似于
struct foo {
char bar[]; =; ;;;;;;/* infinite semicolons */"baz";
}
这是我第一次犯这种错误;我真的做错了什么,还是这只是编译器本身的问题?您做错了什么。不能将值分配给结构体的成员……你在定义数据类型的中间,而不是它的实例。 这将为您提供结构定义,然后直接声明其类型的变量(带有初始化):
struct foo {
char *bar;
char *qux;
} variable_name = {
"baz", "abc"
};
这与Xcode无关。一点也不 您将得到一个编译器错误,因为您无法像这样初始化结构 结构类型定义仅与类型有关。此时将值指定给成员没有意义。也许你是说
struct foo {
char *bar;
char *baz;
};
struct foo x = { "quirk", "foobar" };
相反?您甚至不知道声明结构的语法(也不知道编译器和IDE之间的区别),您指责Xcode的创建者编写了如此巨大的错误?我认为今天对你来说最重要的是谦逊。我不是在指责Xcode背后的程序员。我知道软件错误会发生,我对structs是新手。我认为他们可以遵循类似于
union
s的语法。@user2129150他们确实遵循类似于union
的语法……你也不能像union
那样做;事实上,C++允许它作为2011 ISO标准,可能是通过创建一个隐式构造函数。语义似乎足够清晰;默认情况下,该类型的每个创建对象都会将这些成员初始化为指定的值。C只是不允许。