Инициализировать массив внутри структуры - PullRequest
0 голосов
/ 24 октября 2018

У меня есть такая структура:

typedef struct
{
    union{
        int bytex[8];
        int bytey[7];
   }Value ;
   int cod1;
   int cod;
} test;

и я хочу инициализировать константу test следующим образом:

const test T{
.Value.bytex = {0x11,0x22,0x33,0x44,0x11,0x22,0x33,0x44},
.cod1=0,
.cod=1,
};

Я получаю следующую ошибку

Expected primary-expression before '.' token

Однако эта инициализация верна:

const test T{
{0x11,0x22,0x33,0x44,0x11,0x22,0x33,0x44},
.cod1=0,
.cod=1,
};

Есть ли у вас идея?

1 Ответ

0 голосов
/ 24 октября 2018

Прежде всего, это не близко к изменению синтаксиса инициализации структуры / объединения.Исправление:

const test T = 
{
  .Value.bytex = { 0x11,0x22,0x33,0x44,0x11,0x22,0x33,0x44 },
  .cod1 = 0,
  .cod  = 1,
};

Во-вторых, если у вас есть возможность использовать стандарт C, вы можете удалить внутреннее имя переменной:

typedef struct
{
  union {
    int bytex[8];
    int bytey[7];
  };
  int cod1;
  int cod;
} test;

const test T = 
{
  .bytex = { 0x11,0x22,0x33,0x44,0x11,0x22,0x33,0x44 },
  .cod1 = 0,
  .cod  = 1,
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...