2014-02-21 4 views
0

У меня есть функция в исходном файле 1: Исходный файл 1:лучшая практика для доступа к данным

function in Source file 1. 
    Code: 
     char day[7]; 
    f1: 
     { 
      .... 
      .... 
      .... 
     after some work fill the 
      day[0]= random number; 
      . 
      . 
      . 
      . 
      day[6]=random number;  


      }  

Quote: 
Source file 2: 

f2: 

{ 
extern dayval[]; 

//do stuff 

} 

А теперь я хочу, чтобы получить доступ к этим день [7] значения из массива в исходном файле 2.

Если я объявляю массив в качестве экстерном в исходном файле 2 сразу после того, как f1 в исходном файле выполняется будут значения остаются такими же, или это будет нулевой

Ну простите мою тупость я начал изучать язык C только сейчас, и это было довольно черт возьми, Улыбка. Надеюсь, вы, ребята, просветите меня своими предложениями

Это лучший способ получить доступ к данным. Я работаю над встроенными системами, а некоторые говорят, что по ссылке - хороший вариант. Я был бы рад иметь ваши взгляды в теме.

С уважением

+1

Первый из всего, что вам нужно объявить 'char day [7]' как глобальное в исходном файле 1. –

ответ

1

Да, она может быть решена, объявляя его как extern переменной, но она должна быть глобальной в source1.c тоже. Локальные переменные не могут быть доступны извне их областей, по крайней мере, не по имени.

Так, в source1.c:

char day[7]; 

void function1(void) 
{ 
    day[0] = ...; 
    /* and so on */ 
} 

затем в source2.c:

extern char day[7]; 

void function2(void) 
{ 
    printf("oh, source1 has set day[0] to %c\n", day[0]); 
} 

конечно, вы должны убедиться, что function1() от source1.c работает доfunction2() от source2.c, чтобы инициализировать массив.

Вы могли бы иметь отдельный main.c, что делает:

int main(void) 
{ 
    function1(); 
    function2(); 
    return 0; 
} 

Затем собрать их все вместе, используя что-то вроде этого (предполагается, что НКУ в среде Unix-типа):

$ gcc -o myprogram main.c source1.c source2.c 
+0

Благодарим вас за разъяснения – Rookie91

Смежные вопросы