2014-02-21 67 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的extern将值保持相同的或会是零

好原谅我的愚蠢我已经开始学习C语言刚才在源文件F1被执行后,它已经很地狱的笑容。 我希望你们会用我的建议给我指教

哪一种是最好的访问数据的方式。我正在开发嵌入式系统,有人说通过引用是一个很好的选择。我会很高兴有你的看法在上面。

问候

+1

第一你需要在源文件1中声明'char day [7]'是全局的。 –

回答

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):

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

谢谢澄清 – Rookie91