gpt4 book ai didi

c - 结构体指针的 undefined symbol

转载 作者:行者123 更新时间:2023-11-30 19:22:25 24 4
gpt4 key购买 nike

我正在开发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;

(编译正常)但是当我尝试访问计时器的字段时,我收到以下错误: clkint errors

我做错了什么?

谢谢

编辑:

根据要求,这里是一些 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();
}

编辑:

将所有 t 替换为 timer不能解决问题。

最佳答案

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

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

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

关于c - 结构体指针的 undefined symbol ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16618305/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com