2

我们正在编写一个 ST269 微控制器,它有两个红外距离传感器。为了校准这些传感器,我们为每个传感器制作了一张表格,其中包含我们测量的距离和我们从 ADC 获得的相应值。

现在我们想使用一个函数来近似两者之间的值。所以我们定义了两个二维数组(每个传感器一个)作为全局变量。然后在我们的函数中,我们想要将我们想要使用的一个数组复制到一个工作数组中并近似我们的值。

所以这里是代码:

...

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 编码是几年后的事了,所以我不确定我们尝试这样做的方式是否好。也许我们可以通过使用指针而不是真正复制数组或其他东西来解决这个问题。所以请帮帮我,我会很感激你在这方面的意见。

4

1 回答 1

6

在 C(C99 之前)中,所有变量定义都必须出现在当前块作用域的顶部。

于 2010-05-27T10:36:36.023 回答