Чтобы правильно инициализировать массив в массиве структур, которые необходимо сделать следующее:
typedef struct _TStruct {
uint Values[3];
} TStruct;
TStruct Data[3] = {
{{ 0x86, 0x55, 0x79 }}, {{ 0xaa, 0xbb, 0xcc }}, {{ 0x76, 0x23, 0x24 }}
};
Обратите внимание на двойные скобки вокруг каждой группы значений. Дополнительная пара скобок имеет важное значение, чтобы избежать попадания в следующую Gcc ошибку (только тогда, когда -Wall
флаг присутствует, именно это «обнаружен» по gcc
-Wmissing-braces
флаг):
предупреждения: отсутствуют скобки вокруг инициализатора
Примечание:
Использование двойных скобок {{ }}
не меняет раскладку данных в памяти
Это предупреждение не появляется на MS Visual компилятором Studio C++
Смотрите также:
How to repair warning: missing braces around initializer?
GCC Bug 53319
цитируемой DUP и [ Ошибка GCC 53119] (https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53119), кажется, e при использовании '{0}' с отсутствующими фигурными скобками. Этот вопрос, похоже, не инициализируется таким образом. – jww