Предопределение массива C - PullRequest
2 голосов
/ 28 апреля 2010

В C при определении массива я могу сделать следующее:

int arr[] = {5, 2, 9, 8};

И, таким образом, я определил его и заполнил, но как мне определить его в моем файле .h, а затем заполнить его в моем .c?

Как сделать что-то вроде

int arr[];
arr = {5, 2, 9, 8};

Я довольно новичок в C, не знаю, как это будет выглядеть

есть предложения?

Ответы [ 2 ]

9 голосов
/ 28 апреля 2010

Обычно вы бы положили:

extern int arr[];

В файле .h и:

int arr[] = { 5, 2, 9, 8};

В файле .c.

Редактировать: Дейл Хагглунд и KevinDTimm поднимают хорошие очки: вы хотите поместить инициализацию только в один .c файл, и вам нужно всего лишь поместить что угодно в .h файл если вы собираетесь получить доступ к arr из кода в более чем одном файле .c.

0 голосов
/ 28 апреля 2010

Вы можете использовать include guard для предотвращения многократного повторения назначения, но, на мой взгляд, размещение назначения в заголовках - очень плохая практика. Вместо этого поместите инициализацию в файл c, в функцию init и извлеките массив из файла h.

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