2012-01-17 2 views
0

У меня есть глобальный массив структуры объявленЭкстерн массив структур

struct _links link[255][255][255]; 

в моей main.c. Этот массив структур также используются в другом файл, action.c, и я попытался объявить его в action.c как экстерн, т.е.

extern struct _links link[255][255][255]; 

Однако, я получил сообщение об ошибке «типа массива имеет неполный элемент тип". Я не понимаю, что это значит. Как я могу решить эту проблему?

спасибо.

+0

ли включить вас файл, содержащий определение '_links' во втором файле? –

ответ

3

Определите свою структуру struct _links в файле заголовка; включите, что в my_main.c и action.c, компилируйте их отдельно и свяжите их.

Он работает без файла заголовка для встроенных типов данных. но для пользовательских типов данных требуется файл заголовка.

+0

Обратите внимание, что основной причиной этого является то, что компилятор не может знать размер и выравнивание элементов массива в action.c без полного определения 'struct _links'. – pmdj

2

Вы должны объявить тип struct _links где-то.

1

хорошая практика программирования, чтобы создать новый links.h файл, который содержит

extern struct _links link[255][255][255]; 

включить этот файл как на main.c и action.c.

не забудьте определить переменную только один раз.

для получения дополнительной информации о экстерном ключевого слова, посмотрите на этот пост https://stackoverflow.com/a/1433387/1117720

Смежные вопросы