Как получить доступ к элементу malloc'ed в функции, которая присутствует в другом файле
file1.c
#include<xyz.h> //all header files
extern struct SomeDefaultStructurefromHeader *str;
void myfunction(){
str = (struct SomeDefaultStructurefromHeader*)malloc(sizeof(struct SomeDefaultStructurefromHeader));
str->element1 = 1;
str->element2 = 2;
}
Как получить доступ к значениям str в другом файле, скажем file2.c. Моя идея состояла в том, чтобы создать новый элемент SomeDefaultStructurefromHeader, а затем как-то указать на str. Будет ли использование extern помочь здесь, если объявлен как extern, а затем вызывает его в файле 2
Например: file2.c
struct SomeDefaultStructurefromHeader *st1;
void func2(){
st1 = (struct SomeDefaultStructurefromHeader*)malloc(sizeof(struct SomeDefaultStructurefromHeader));
st1 = str;
printf(st1->element1) // this might return the value str->element1 which is 1
}
Как мне это достичь?
спасибо
Вы должны объявить его в файле file1.c следующим образом:
struct SomeDefaultStructurefromHeader *str;
и в файле2.c добавьте спецификатор extern:
extern struct SomeDefaultStructurefromHeader *str;
Вам необходимо объявить файл file2.c, а также:
extern struct SomeDefaultStructurefromHeader *str;
Однако в одном из файлов C вы должны определить глобальную переменную как:
struct SomeDefaultStructurefromHeader *str;
st1 = str;
это утечка памяти.malloc
в C. И действительно, передавать адрес указателя или возвращать указатель вместо того, чтобы полагаться на глобальные переменные.