0

我目前正在学习 C。我一直在玩 typedef 和 structs,遇到了一个奇怪的错误(至少在我没有经验的眼里)。

我正在使用 typedef 创建一个维度类型(两个值的 int 数组),并且我有一个使用该类型 def 的结构。

在尝试为我的 main 中的字段指定值时,我遇到了一个错误:

error: expected expression before ‘{’ token

编码:

typedef int dimensions[2];

struct television
{
    dimensions resolution;
};

int main()
{
    struct television theTV;
    theTV.resolution = {1024, 768};

    return 0;
}

这是一个非常人为的例子——是否可以以这种方式初始化 .resolution 变量?

4

2 回答 2

3

改用:

struct television theTV = {{1024, 768}};

{}初始化列表只能在声明中使用,不能在语句中使用。

于 2013-08-05T21:10:17.777 回答
2

不允许对数组使用赋值,因为它是不可修改的左值。但是,您可以使用memcpy()复合文字:

memcpy(theTV.resolution, (dimensions){1024, 768}, sizeof(dimensions));
于 2013-08-05T21:12:30.023 回答