2014-02-21 65 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