【发布时间】:2010-05-24 05:40:02
【问题描述】:
编辑 2
感谢所有建议,我根据给出的建议编辑了下面的代码。但是,它似乎仍然无法编译。尽管如此,还是非常感谢您的帮助。
编辑
我很抱歉没有将 pcb 结构放入代码 sn-p。在我最初发布的两个结构上面定义了一个名为 pcb 的结构。即,
typedef struct pcb{
UINT32 proc;
struct pcb *link;
}pcb;
嗨,
几分钟前我问了一个关于 C 中的结构的问题,并很快得到了答案。但是现在我面临另一个问题,即这个问题的标题错误。我正在尝试使用队列数组在 C 中实现一个简单的优先级队列。但是,当我尝试在 pcb_pQ 结构上声明函数时,出现上述错误。我在听到的文件中明确定义了结构。
在头文件中:
typedef struct pcb_Q{
pcb *head;
pcb *tail;
SINT32 size;
} pcb_Q;
typedef struct pcb_pQ {
pcb_Q queues[5];
SINT32 size;
} pcb_pQ;
头文件中的函数原型:
/*priority queue operations*/
VOID pcb_pq_enqueue(pcb_pQ*, pcb*);
.c文件中的函数实现:
VOID pcb_pq_enqueue(pcb_pQ* pcb_pQ_p, pcb* pcb_p) {
pcb_Q* pcb_Q_p;
int priority;
priority = pcb->proc_priority;
pcb_Q_p = &pcb_pQ->queues[priority];
pcb_enqueue(pcb_Q_p, pcb);
}
当我尝试编译上述代码时,我在 '*' 标记之前收到“错误:预期的 ')'。这个错误指向.c文件中的函数签名,即
VOID pcb_pq_enqueue(pcb_pQ* pcb_pQ_p, pcb* pcb_p) {
但我不确定为什么会出现此错误,有人可以帮帮我吗?非常感谢。
【问题讨论】:
-
pcb在哪里定义为type?
-
我认为对类型和变量使用相同的名称是一个非常糟糕的主意。如果你能把它们区分开来,阅读起来会容易得多。
-
从 cmets 看来,编译器找不到 pcb_pQ,因为我还有其他使用 pcb 和 pcb_Q 的函数,它们没有显示任何问题。有没有像每个标题定义的最大结构数之类的东西?我知道这听起来很愚蠢,但我就是不知道怎么回事
-
如果我取出函数参数中的pcb_pQ,代码编译得很好
-
@lhw 你用的是什么编译器?