Вы определяете массив в одном файле 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[];