在struct-C中为typedef字段发出初始化值

时间:2013-08-05 21:07:47

标签: c struct typedef

我正在学习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变量?

2 个答案:

答案 0 :(得分:3)

改为使用:

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

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

答案 1 :(得分:2)

您不能使用赋值给数组,因为它是一个不可修改的l值。但是,您可以将memcpy()与复合文字一起使用:

memcpy(theTV.resolution, (dimensions){1024, 768}, sizeof(dimensions));