Ошибка: элемент инициализатора не вычисляется во время загрузки - PullRequest
11 голосов
/ 02 октября 2008

У меня есть функция, которая принимает структуру, и я пытаюсь сохранить ее переменные в массиве, но я получаю это при запуске gcc -Wall -ansi -pedantic-errors -Werror

int detect_prm(Param prm) {
  int prm_arr[] = {prm.field1, prm.field2, prm.field3};

  return 0;
}

Я получаю сообщение об ошибке: элемент инициализатора не вычисляется во время загрузки, когда я пытаюсь скомпилировать вышеуказанное. Это выглядит хорошо для меня, что не так?

Ответы [ 2 ]

16 голосов
/ 02 октября 2008

Майк полностью прав.

Однако, если вы можете использовать расширения GNU C или использовать вместо этого более новый и лучший стандарт C99 (используйте опцию --std=c99), то такие инициализаторы совершенно законны. Стандарт C99 существует уже 9 лет, и большинство компиляторов C поддерживают его довольно хорошо ... особенно эта функция.

13 голосов
/ 02 октября 2008

Это недопустимо в C. Списки инициализаторов должны быть выражениями с постоянной компиляцией. Вместо этого выполните следующие действия:

int prm_arr[3];

prm_arr[0] = prm.field1;
prm_arr[1] = prm.field2;
prm_arr[2] = prm.field3;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...