Где я могу определить мой константный массив в C? - PullRequest
1 голос
/ 11 сентября 2010

Я пишу немного C и у меня есть таблица поиска целых чисел.Я немного заржавел ... где мне объявить и инициализировать массив, чтобы я мог использовать его в нескольких файлах C?Могу ли я объявить его в файле H и инициализировать его в файле C?

Ответы [ 4 ]

3 голосов
/ 11 сентября 2010

Глобальные значения должны быть объявлены в файле .h и должны быть объявлены как extern, а затем они должны быть определены в файле .c.См. Какой лучший способ объявить и определить глобальные переменные и функции? из часто задаваемых вопросов comp.lang.c.

Для массивов может потребоваться дополнительная забота.См. Также Q1.24 в FAQ по comp.lang.c.

2 голосов
/ 11 сентября 2010

Вы определяете массив в одном файле C и объявляете его как extern в другом.

Одна распространенная ошибка - приравнивать массив с указателем и делать что-то вроде:

// file1.c:
int array[] = { 1,2,3,4};

// file1.h:
extern int *array;

// file2.c:
#include "file1.h"

// use array

Это будет не работать.В некоторых ситуациях вы можете рассматривать имя массива как указатель, но это , а не один из них.[Редактировать: Правильно сделать что-то вроде:

 // file1.h:
 extern int array[];
2 голосов
/ 11 сентября 2010

Если я правильно понимаю, да, вы можете сделать это.Прочитайте что-нибудь о

extern static

ключевых слов.

1 голос
/ 11 сентября 2010

Вы можете объявить его в заголовочном файле с помощью extern и определить его в одном из ваших исходных файлов.Однако по определению оно также не может быть static.

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