Я пытаюсь получить доступ к массиву C с помощью макроса.Массив объявляется как extern const в заголовочном файле и фактически определяется / инициализируется в исходном файле.Макрос находится в шапке.Затем я хочу получить доступ к массиву из другого файла.И другой файл, и файл, который определяет массив #include заголовок.
Я попытался получить доступ к массиву напрямую из другого файла, и он работает.Я также могу успешно использовать макрос, если массив определен в заголовке, а не в отдельном C-файле.Но мне нужно получить доступ к массиву с помощью макроса, и массив должен быть определен в отдельном исходном файле, а не в заголовке.
Это то, что у меня есть в заголовке (давайте назовем его file.h):
#define SIZE 10
#define get_arr(i) (arr[i])
extern const uint8 arr[SIZE];
В источнике с определением массива (это file.c):
"#include file.h"
const uint8 arr[SIZE] = {0};
В другом исходном файле, который фактически хочет использовать массив:
"#include file.h"
for(uint8 i = 0; i<SIZE; i++) {
Data[i] = get_arr(i); //Data is a pointer passed as a parameter to a function)
}
Когда я пытаюсь построить, у меня возникает проблема со связыванием: "неразрешенные символы".