C++20 引入了指定初始化器。我正在尝试使用新语法初始化结构内的字符数组。
struct Test
{
unsigned v;
char b[12];
};
int main()
{
char str[12] = "hello"; // Works.
char strb[12]{"hello"}; // Works.
//
Test testa
{
.v = 100u,
.b = "hello" //Doesn't work...
};
Test testb
{
.v = 100u,
.b = { "hello" } //Doesn't work...
};
Test testc
{
.v{ 100u },
.b{ "hello" } //Doesn't work...
};
Test testd
{
.v{ 100u },
.b{ "hello" } //Doesn't work...
};
Test teste
{
.v = 100u,
.b = {} //This works.
};
Test testf
{
.v = 100u,
.b = {'h', 'e', 'l', 'l', 'o', '\0'} //This works.
};
return 0;
}
我发现这种行为集市,这char str[12] = "hello";
条线工作得很好。但是相同的初始化形式在指定的初始化列表中不起作用。
问题:为什么我不能用字符串文字初始化 char 数组?
编辑
我以前使用的是 GCC。 这适用于铿锵声。GCC 是否有解决方法,clang 或 GCC 是否正确?