2014-10-13 2 views
0

Как получить доступ к malloc'ed элемент в функцию, которая присутствует в другом файлеДоступ к malloc'd функции в другом файле

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. Будет ли использование экстерном помощь здесь, если объявлена ​​ул, как ехЬегп и затем вызвать его в файле 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 = ул;' является утечка памяти. – BLUEPIXY

+2

Вы компилируете C или C++? Вы не должны бросать 'malloc' в C. И действительно, передайте адрес указателя или верните указатель вместо того, чтобы полагаться на глобальные переменные. – crashmstr

+0

Для объявления используйте один общий файл заголовка ('.h'). А для копирования структуры используйте 'memcpy'. –

ответ

2

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

extern struct SomeDefaultStructurefromHeader *str; 

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

struct SomeDefaultStructurefromHeader *str; 
3

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

struct SomeDefaultStructurefromHeader *str; 

и в file2.c добавить EXTERN спецификатор:

extern struct SomeDefaultStructurefromHeader *str; 
Смежные вопросы