编译器错误:";预期的&引用;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只是不允许。