-1

我正在研究xinu,我需要更改一些*.c文件。我在文件中有这个结构ready.c

struct newtimer{
    struct newtimer* tnext;
    struct newtimer* tprev;
    int tkey;
    int tprio;
    int tcount;
};

然后我宣布:

struct newtimer *timer = NULL;

我在这个文件中使用了timer变量,我还需要在另一个文件中使用它(clkint.c)。所以在clkint我这样做:

extern struct newtimer *timer;

(编译好)但是当我尝试访问timer的字段时,我得到了这些错误: 时钟错误

我究竟做错了什么?

谢谢

编辑:

根据要求,这里有一些clkint.c

struct newtimer *t;
extern struct newtimer *timer;
...
t = timer;
while(t!= NULL)
{
    ++(t->tcount);
    if(t->tcount >= 18){
        t->tcount = 0;
        newprior = proctab[t->tkey]->pprio + 10;
        t->tcount = newprior;
        chprio(t->tkey, newprior);
    }
    t = t->tnext;
    resched();
}

编辑:

将所有ts替换为timers 并不能解决问题。

4

1 回答 1

1

您的struct newtimer类型未定义。您可能忘记包含定义struct newtimer.

当您在 中使用未知的结构名称时struct something,C 编译器会将其视为全新结构类型的前向声明。当然,该类型是不完整的,这就是为什么不允许您访问该类型的任何内部结构的原因。编译器对这些内幕一无所知。

你的struct newtimer定义在哪里?如果它是在头文件中定义的,则必须将其包含在clkint.c.

于 2013-05-17T22:23:25.917 回答