使用先前声明的数组初始化结构
Initialize a struct with previous declared array
我有以下情况:
typedef struct A {
unsigned int a[4];
} A_;
int main() {
unsigned int b[4] = {1,2,3,4};
A_ a = {b};
}
这让我收到以下警告:
warning: initialization of 'unsigned int' from 'unsigned int *' makes
integer from pointer without a cast
但是做这个A_ a = {{1,2,3,4}};
没问题。为什么?
标准 C 不提供任何机制来用数组初始化结构成员,除了用字符串文字初始化数组。
相反,您可以使用结构初始化结构。假设你想用的值在写代码的时候是已知的,后面的结构也可以做成static const
:
int main(void)
{
static const A_ InitialStructure = {{ 1, 2, 3, 4 }};
A_ a = InitialStructure;
}
我有以下情况:
typedef struct A {
unsigned int a[4];
} A_;
int main() {
unsigned int b[4] = {1,2,3,4};
A_ a = {b};
}
这让我收到以下警告:
warning: initialization of 'unsigned int' from 'unsigned int *' makes integer from pointer without a cast
但是做这个A_ a = {{1,2,3,4}};
没问题。为什么?
标准 C 不提供任何机制来用数组初始化结构成员,除了用字符串文字初始化数组。
相反,您可以使用结构初始化结构。假设你想用的值在写代码的时候是已知的,后面的结构也可以做成static const
:
int main(void)
{
static const A_ InitialStructure = {{ 1, 2, 3, 4 }};
A_ a = InitialStructure;
}