Доступ к функции malloc'd в другом файле

0

Как получить доступ к элементу 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
} 

Как мне это достичь?

спасибо

  • 1
    st1 = str; это утечка памяти.
  • 2
    Вы компилируете C или C ++? Вы не должны приводить malloc в C. И действительно, передавать адрес указателя или возвращать указатель вместо того, чтобы полагаться на глобальные переменные.
Показать ещё 1 комментарий
Теги:
pointers
struct

2 ответа

3

Вы должны объявить его в файле file1.c следующим образом:

struct SomeDefaultStructurefromHeader *str;

и в файле2.c добавьте спецификатор extern:

extern struct SomeDefaultStructurefromHeader *str;
2

Вам необходимо объявить файл file2.c, а также:

extern struct SomeDefaultStructurefromHeader *str;

Однако в одном из файлов C вы должны определить глобальную переменную как:

struct SomeDefaultStructurefromHeader *str;

Ещё вопросы

Сообщество Overcoder
Наверх
Меню