2010-05-27 66 views
2

我們正在編程一個具有兩個紅外距離傳感器的ST269微控制器。爲了校準這些傳感器,我們爲每個傳感器製作了一個表格,其中包含我們測量的距離以及我們從ADC獲得的相應值。將多維陣列複製到另一個陣列時的語法錯誤C

現在我們要使用一個函數來近似兩者之間的值。因此我們將兩個二維數組(每個傳感器一個)定義爲全局變量。在我們的函數中,我們然後想要將我們想要使用的一個數組複製到一個工作數組並且近似我們的值。

所以這裏的代碼:

... 

unsigned int ir_werte_re[][] = { 
    {8,553}, 
    ... 
    {83,133} 
}; 

unsigned int ir_werte_li[][] = { 
    {8,566}, 
    ... 
    {83,147} 
}; 

... 

unsigned int geradenaproximation(unsigned int messwert, unsigned int seite) 
{ 
    unsigned int working_array[16][16]; 
    unsigned int i = 0; 

    if (seite == 0) { 
     for (i = 0; i < sizeof(working_array); i++) { 
      working_array[i][0] = ir_werte_li[i][0]; 
      i++; 
     } 
    } 
    else { 
     for (i = 0; i < sizeof(working_array); i++) { 
      working_array[i][0] = ir_werte_re[i][0]; 
      i++; 
     } 
    } 

    i = 0; 
    unsigned int y1 = 0; 
    unsigned int x1 = 0; 
    ... 
} 

此代碼是在一個名爲sensor.c。我們沒有在sensor.h中寫關於全局數組的任何信息? sensor.h當然包含在main.c中,並且調用函數。

我們也嘗試通過

的memcpy複製的陣列(working_array,ir_werte_li,的sizeof(working_array));

,並在每個我們這樣做,我們得到一個

syntax error near unsigned 
在該行

,我們正在聲明

unsigned int y1 = 0; 

,我敢肯定,沒有語法錯誤在這行:)

我最後一次花在C編碼是幾年後,所以我不知道我們試圖做到這一點的方式是好的。也許我們可以通過使用指針而不是真正複製數組或其他東西來解決這個問題。所以請幫助我,我會很感激你的這一點。

回答

6

在C(C99之前)中,所有變量定義必須出現在當前塊作用域的頂部。

+0

Pre-C99是的,C99允許您自由放置聲明。 – 2010-05-27 10:41:14

+0

謝謝你指出喬治。我已經相應地修改了答案。 – 2010-05-27 10:42:36

+0

謝謝。 現在我要做的就是等待一個星期,讓我有機會再次把我的手放在機器人上。 – mantuko 2010-05-27 13:55:16