Инициализация массива структур в C - PullRequest
0 голосов
/ 12 октября 2010

Я ищу инициализировать глобальный массив элементов в C в заголовочном файле, однако он продолжает жаловаться при компиляции. Вот моя структура

typedef struct
{
 char input[100][100];
 int count;
 char name;
}INPUT;

extern INPUT[] global;

Спасибо

Ответы [ 4 ]

1 голос
/ 12 октября 2010
  • Вы не можете инициализировать его в заголовочном файле, сделайте это в файле C.
  • Используйте extern, если вы хотите получить доступ к этому глобальному массиву в каком-то другом файле C.
1 голос
/ 12 октября 2010

В вашем заголовке объявите внешний указатель на массив, например,

extern INPUT *global;

В одном из тел объявить фактическое хранение:

INPUT global_[N], *global = global_;
0 голосов
/ 12 октября 2010

Не уверен насчет этого, но вы можете попробовать, указав размер массива?
extern INPUT[100] global;

0 голосов
/ 12 октября 2010

Я должен был угадать, что вы хотите, я надеюсь, что об этом:

typedef struct {
  char input[100][100];
  int count;
  char name;
} INPUT;

INPUT global[] = {
  { {'x', 'y'}, /* count: */ 1, /* char */ 'x' },
  { {"how now", 'y'}, /* count: */ 1, /* char */ 'x' },
  { {"brown cow", 'y'}, /* count: */ 1, /* char */ 'x' },
  { {"more", " stuff"}, /* count: */ 1, /* char */ 'x' },
  { {{'x', 'y'}, {'a', 'b'}}, /* count: */ 1, /* char */ 'x' },
};

Сборка с cc -Wall -Wno-missing-braces -c ...

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