Инициализировать массив с одним значением в C (GCC) - PullRequest
1 голос
/ 16 октября 2011

У меня в заголовочном файле объявлен массив, подобный этому:

int snapshot[kSnapshotSize];

, который я действительно хотел бы инициализировать, как это в моем файле реализации:

snapshot[kSnapshotSize] = {[0 ... kSnapshotSize-1] = 5};

однако компиляторжалуется: «Ожидаемое выражение»

Может кто-нибудь сказать мне, что я делаю неправильно?

ОБНОВЛЕНИЕ: int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize] = 5};, кажется, работает, поэтому, вероятно, я упускаю что-то базовое.Я думаю, что могу использовать memset, но сначала хотел бы убедиться, что это невозможно (и почему)

ОБНОВЛЕНИЕ 2: Как многие из вас указали, кажется, что возможно только инициировать массивкак то, чтобы не заполнить это позже.Я заканчиваю тем, что использую петлю for.

1 Ответ

4 голосов
/ 16 октября 2011

Полагаю, вы имеете в виду

int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize - 1] = 5};

Но это использование ... является специфичным для gcc расширением. Если вы не возражаете против того, чтобы быть ограниченным gcc, это нормально.

memset() не будет работать; он устанавливает каждый байт цели в указанное значение.

Для мобильности лучше всего использовать явный цикл для установки каждого элемента.

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