Android — Отсутствующие фигурные скобки для многомерных массивов

Когда я строил свой проект для общей библиотеки Android в Visual Studio, я получил предупреждение ниже.

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.

Должен ли я принять это всерьез?

4

Решение

То, что у вас есть, называется агрегатной инициализацией с помощью brace elision, у вас все отлично, код соответствует стандарту.

От cppreference.com:

Если при инициализации агрегата используется форма со знаком равенства (T a
= {args ..}), (до C ++ 14) скобки вокруг вложенных списков инициализаторов могут быть исключены (опущены), и в этом случае столько инициализаторов
пункты по мере необходимости используются для инициализации каждого члена или элемента
соответствующий субагрегат и последующие предложения инициализатора
используются для инициализации следующих членов объекта. Тем не мение,
если объект имеет субагрегат без каких-либо членов (пустой
struct, или структура, содержащая только статические члены), скобка elision не
разрешено, и должен использоваться пустой вложенный список {}.

Смотрите больше деталей Вот а также Вот.

5

Другие решения


По вопросам рекламы [email protected]