У меня есть программа, распределенная по нескольким файлам. Есть ряд функций, которым нужен доступ к глобальному массиву. У меня проблема в том, что я не знаю размер массива до запуска программы. Он открывает файл, а затем загружает несколько точек, а затем создается массив с соответствующим размером. Но для того, чтобы массив был глобальным, он должен быть объявлен вне основной функции, т. Е. Прежде чем я узнаю количество точек.
То, что я пытался сделать сейчас, это:
file1.c:
#include <stdio.h>
#include "file3.h"
int useful[];
int main()
{
int useful[10];
int i;
for (i = 0; i < 10; i++) {
useful[i] = i+1;
}
SPN();
return 0;
}
file2.c:
#include <stdio.h>
#include "file3.h"
void SPN() {
int i;
for (i = 0; i < 10; i++) {
printf("%i\n", useful[i]);
}
}
file3.h:
extern int useful[];
extern void SPN();
То, что я получаю в выводе, это просто набор из 0. Сначала я думал, что второй int полезный [... в file1.c создает новый массив с другим внутренним именем, но это, кажется, не имеет никакого смысла, учитывая, что SPN () не вызывает ошибку сегментации, когда он пытается получить доступ к памяти за пределами массива (если полезно [] создает массив и не изменяется, он имеет размер по умолчанию 1, т.е. <10). Помогите? </p>