多维数组缺少大括号

Missing braces for multi-dimensional arrays

本文关键字:数组      更新时间:2023-10-16

当我在Visual Studio中为Android共享库构建项目时,我收到了下面的警告信息。

warning : suggest braces around initialization of subobject
[-Wmissing-braces]

该消息表示数组初始化语句只使用一对大括号。

int myArray[ROW][COL] = { 1, 2, 3, 4, 5, 6, ..., 451, 452, 453 };

我不能用两对来写的原因是将来ROW和COL的大小可能会改变。

它工作得很好,但我不确定是否可以这样离开项目,因为我从来没有见过这样的警告信息,当为Windows应用程序编写代码时。

我一定要认真对待吗?

您所拥有的是通过大括号省略的聚合初始化,您完全可以,代码是标准兼容的。

从cppreference.com

:

如果聚合初始化使用带有等号的形式(T= {args..}),(直到c++ 14)嵌套初始化器列表周围的大括号可以省略(省略),在这种情况下,许多初始化器都可以省略的每个成员或元素初始化相应的子聚合,以及随后的初始化子句用于初始化对象的以下成员。然而,如果对象有一个没有任何成员的子聚合(一个空的结构(或只包含静态成员的结构),大括号省略则不是允许,并且必须使用空嵌套列表{}。