【发布时间】:2019-11-26 16:53:38
【问题描述】:
我有以下情况:
typedef struct A {
unsigned int a[4];
} A_;
int main() {
unsigned int b[4] = {1,2,3,4};
A_ a = {b};
}
这让我收到以下警告:
警告:从 'unsigned int *' 初始化 'unsigned int' 会导致 没有强制转换的指针的整数
但是制作这个A_ a = {{1,2,3,4}}; 是可以的。为什么?
【问题讨论】:
-
A_ a = {.a = b};为我工作。 -
其实没有。它可以编译,但不起作用。
-
@EugeneSh.:我对此表示怀疑。你能举一个 Godbolt 的例子吗?
-
@EricPostpischil 你是对的,在你之前添加了另一条评论。不确定它的作用...ideone.com/k2xOIj
-
@EugeneSh.:它完全按照问题中显示的消息所说的那样:从没有强制转换的指针中生成一个整数。该语法使
b成为赋值表达式,因此它被转换为指向其第一个元素的指针,并用于初始化a.a中的第一个int。
标签: c arrays struct initialization initializer-list