C 错误:‘;节点’;未声明(首次在此函数中使用)
我在编译时遇到此错误C 错误:‘;节点’;未声明(首次在此函数中使用),c,struct,malloc,C,Struct,Malloc,我在编译时遇到此错误 queue.c: In function ‘enqueue’: queue.c:25:10: error: ‘node’ undeclared (first use in this function) queue.c:25:10: note: each undeclared identifier is reported only once for each function it appears in 为什么会出现这种情况?我不明白如何定义变量节点 以下是我的排队代码:
queue.c: In function ‘enqueue’:
queue.c:25:10: error: ‘node’ undeclared (first use in this function)
queue.c:25:10: note: each undeclared identifier is reported only once for each function it appears in
为什么会出现这种情况?我不明白如何定义变量节点
以下是我的排队代码:
void enqueue(Queue* queue, int value){
QNode* node =(QNode *)malloc(sizeof(struct QNode));
node->data = value;
if(queue->size == 0){
q->front = node;
q->rear = node;
}else{
queue->rear->next = node;
queue->rear = node;
queue->size++;
}
}
在文件的开头,我用以下方式定义QNode和Queue:
typedef struct QNode;
struct QNode{
struct QNode* next;
int data;
} QNode;
typedef struct Queue{
int size;
struct QNode* front;
struct QNode* rear;
} Queue;
虽然从技术上讲不是错误:
typedef struct QNode;
struct QNode{
...
最好写为:
typedef struct QNode {
...
你还有:
if(queue->size == 0){
q->front = node;
q->rear = node;
q的定义在哪里
也许你的意思是:
if(queue->size == 0){
queue->front = node;
queue->rear = node;
我认为
typedef结构QNode
实际上是合法的,尽管它是无用的。它使下面的struct QNode…
声明声明一个名为QNode
的对象,而不是将QNode
声明为typedef。是!一个必然的结果是,void enqueue()函数中的“node”不存在声明(进一步)。编译器随后会抱怨使用了未声明的标识符,即“node”