Инициализировать массив во время компиляции - PullRequest
1 голос
/ 23 апреля 2011

foo - это глобальный массив целых чисел, который должен быть инициализирован. Если в будущем я изменю SIZE на 6, тогда мне придется вручную добавить два новых элемента INIT_VALUE в список инициализации. Есть ли макрос или другая вещь, которую можно было бы использовать для автоматического изменения списка инициализации во время компиляции при изменении значения SIZE?

#define SIZE 4
#define INIT_VALUE 101

/* global variable that must be initialized */
int foo[SIZE] = {INIT_VALUE, 
                 INIT_VALUE, 
                 INIT_VALUE, 
                 INIT_VALUE};

1 Ответ

1 голос
/ 23 апреля 2011

Если это INIT_VALUE не равно 0, вы не можете инициализировать массив так, как вы упомянули (для поддержки неизвестных элементов). Я не думаю, что есть даже такая возможность реализовать его с помощью макросов, вероятно, правильный способ сделать это - цикл инициализации (в функции) массива (memset тоже не поможет, если ваше значение не похоже на 0xYXYXYXYX (все байты одинаковы))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...