我正在使用VS2013。整个程序是C,而不是C ++。
我可以初始化"字符串数组"像这样没有任何问题:
char titles[4][80] = { "Dad", "Idiot", "Donut Lover", "Fewl" }; // OK!
我有一个像这样声明的结构:
typedef struct
{
char name[80];
char titles[4][80];
} Dude;
当我尝试像这样初始化结构时:
Dude homer =
{
.name = "Homer",
.titles = { "Dad", "Idiot", "Donut Lover", "Fewl" } // error?
};
我得到一个"错误C2078:初始化程序太多"。这是因为数组初始化 - 如果我删除.titles = { ...
行,则错误消失。为什么我收到此错误?在struct初始化程序中是否有不同的方法来完成这种类型的字符串初始化?
如果我将结构的声明更改为这样
typedef struct
{
char name[80];
char *titles[4];
} Dude;
错误消失了。然而,这不是我能做出的改变。代码库的其他部分要求此结构的大小恰好为400字节。
此外,我非常清楚我可以使用strcpy
来填写每个字段,但这并不能回答我的问题。
答案 0 :(得分:0)
在C中,这样做更容易:
Dude homer =
{
"Homer",
{ "Dad", "Idiot", "Donut Lover", "Fewl" } // error?
};
不知道这是否有效,但您可以尝试:
Dude homer =
{
.name = "Homer",
.titles[] = { "Dad", "Idiot", "Donut Lover", "Fewl" } // error?
};