编译器错误:C struct中的“Expected;”错误

问题描述 投票:0回答:2

我正在尝试使用以下语法将struct添加到我的程序中:

struct foo {
    char bar[] = "baz";
    char qux[] = "abc";
    /* and so on */
};

出于某种原因,我在struct中的每个变量声明中得到一个错误,说我必须添加分号,并且似乎属于这种循环。建议的语法类似于

struct foo {
    char bar[]; =; ;;;;;;/* infinite semicolons */"baz";
}

这是我第一次遇到这种错误;我真的做错了什么,或者这只是编译器本身的一个问题?

c struct syntax
2个回答
4
投票

这与Xcode无关。完全没有。

您收到编译器错误,因为您无法像这样初始化结构。

结构类型定义仅与类型有关。此时为成员分配值毫无意义。也许你的意思

struct foo {
    char *bar;
    char *baz;
};

struct foo x = { "quirk", "foobar" };

代替?


2
投票

你做错了什么。您不能将值分配给结构的成员...您正在定义数据类型,而不是它的实例。

这将为您提供结构定义,然后直接声明其类型的变量(带初始化):

struct foo {
    char *bar;
    char *qux;
} variable_name = {
    "baz", "abc"
};
© www.soinside.com 2019 - 2024. All rights reserved.