我正在学习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变量?
答案 0 :(得分:3)
改为使用:
struct television theTV = {{1024, 768}};
{}
初始化列表只能在声明中使用,不能在语句中使用。
答案 1 :(得分:2)
您不能使用赋值给数组,因为它是一个不可修改的l值。但是,您可以将memcpy()
与复合文字一起使用:
memcpy(theTV.resolution, (dimensions){1024, 768}, sizeof(dimensions));