Предположим, что я хочу совместно использовать глобальный массив данных через мою программу, например:
int lookup_indexes[] = { -1, 1, 1, -1, 2, 1, 1, -2, 2, 2, -1, 1, 1, 2 };
Каково корректное extern
объявление для этого массива в заголовочном файле C?
Также что относительно массива как это:
int double_indexes[][5] = { { -1, 1, 1, -1, 1 }, { 2, -2, 2, 1, -1 } };
В моем заголовочном файле я попробовал это:
extern int lookup_indexes[];
extern int double_indexes[][5];
Но это приводит к ошибкам компилятора:
water.h:5: error: array type has incomplete element type
Я не могу понять это.
Спасибо, Boda Cydo.
В этой ссылке обсуждаются проблемы с массивами и размерами, используемыми в качестве экстернов, и способы управления ими.
Код, который вы опубликовали, мне нравится и компилируется ( gcc -std = c99 -pedantic
и gcc -std = c90 -pedantic
) на моей машине. Скопировали ли вы эти строки или вы допустили опечатку в своем реальном заголовке?
Примеры опечаток, которые могут вызвать вашу ошибку (чистое предположение):
extern int double_indexes[][]; /* forgot the 5 */
extern int double_indexes[5][]; /* [] and [5] swapped */