2010-05-27 4 views
2

두 개의 IR 거리 센서가있는 ST269 마이크로 컨트롤러를 프로그래밍하고 있습니다. 이 센서를 보정하기 위해 측정 한 거리와 ADC에서 얻은 해당 값을 사용하여 각 센서에 대해 하나의 테이블을 만들었습니다.다차원 배열을 다른 C 배열로 복사하는 중 구문 오류가 발생했습니다

이제는 중간에 값을 근사화하는 함수를 하나 사용하고 싶습니다. 그래서 우리는 두 개의 2 차원 배열 (각 센서에 하나씩)을 전역 변수로 정의했습니다. 우리 함수에서 우리는 우리가 작업하고자하는 하나의 배열을 작동하는 배열로 복사하고 우리의 값을 근사화하고자합니다.

그래서 여기에 코드입니다 :

... 

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에 포함되어 있으며 함수가 호출됩니다.

우리는 또한

방어 적이기를 통해 배열을 복사하려고 (working_array, ir_werte_li,는 sizeof (working_array));

우리가 이렇게 모든면에서 우리가

unsigned int y1 = 0; 

를 선언하고 우리는 어디 라인에서

syntax error near unsigned 

을 얻고 내가 어떤 구문 오류이에 없다는 것을 확신 줄 :)

마지막으로 C로 코딩하는 데 몇 년이 걸렸으므로 우리가이 작업을 수행하는 방식이 좋은지 확실하지 않습니다. 포인터를 사용하여 실제로 배열을 복사하는 대신이 방법을 사용할 수 있습니다. 그래서 제발 나를 도와주세요.

답변

6

C (사전 C99)에서 모든 변수 정의는 현재 블록 범위의 맨 위에 나타나야합니다.

+0

Pre-C99 예, C99에서는 선언을 자유롭게 배치 할 수 있습니다. –

+0

Georg를 찾아 주셔서 감사합니다. 그에 따라 대답을 수정했습니다. –

+0

고맙습니다. 지금해야 할 일은 우리 로봇을 다시 얹을 수있는 기회를 얻기 위해 일주일을 기다리는 것뿐입니다. – mantuko

관련 문제