一五零号 2021-09-09 20:16 采纳率: 66.7%
浏览 58

C52单片机在使用链表队列时的错误

img


错误图片是这样,请问应该如何改正

#include <REGX52.H>
#include <stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef struct printnode{                      //    队列定义
    unsigned char *numpoint;
    struct printnode *next;
}printnode,*print;


void push(unsigned char *q,print l)      //将地址q放入队列
{
    printnode *lq1,*lq2; 
    if(l->next==NULL) lq1=l->next;
    else {     
         lq1=l->next;
         while(lq1->next!=NULL)
         {
            lq1=lq1->next;
        }
    }
    lq2=(struct printnode*)malloc(sizeof(struct printnode));
    lq2->numpoint=q;
    lq1->next=lq2;
    //lq2->next=NULL;
}
unsigned char* pop(print l)           //弹出一个地址
{
   unsigned char *exam;
   struct printnode *pointexam;
   if(l->next==NULL)  exam=NULL;
   else{
          pointexam=l->next;
       l->next=l->next->next;
       pointexam->next=NULL;
       exam=pointexam->numpoint;
   }
       return exam;
}

  • 写回答

5条回答 默认 最新

  • qllaoda 2021-09-09 21:18
    关注

    你的print是在C文件里定义的,所以h文件里肯定没有这个定义,编译器处理到那里的时候就无法处理。你贴的那段代码倒是没什么问题。
    一般应该把类型定义放到头文件里,而且在包含的时候处于前面的位置,这样,后面的头文件里才能使用相应的类型。
    就你这段代码来说,应该把
    typedef struct printnode{ // 队列定义
    unsigned char *numpoint;
    struct printnode *next;
    }printnode,*print;
    放到queue.h那段代码之前

    评论

报告相同问题?

问题事件

  • 创建了问题 9月9日

悬赏问题

  • ¥25 使用cube ai 导入onnx模型时报错
  • ¥15 关于#微信小程序#的问题:用一个网页显示所有关联的微信小程序数据,包括每个小程序的用户访问量
  • ¥15 root的安卓12系统上,如何使apk获得root或者高级别的系统权限?
  • ¥20 关于#matlab#的问题:如果用MATLAB函数delayseq可以对分数延时,但是延时后波形较原波形有幅度上的改变
  • ¥15 使用华为ENSP软件模拟实现该实验拓扑
  • ¥15 通过程序读取主板上报税口的数据
  • ¥15 matlab修改为并行
  • ¥15 大数据应用基础专业问题
  • ¥20 数据分析出错了,希望有能人看看,解决一下
  • ¥15 尝试访问%1服务的windows注册表时遇到问题。必须先解决此问题,然后才能运行安装过程。(请确认您正在使用管理员权限运行)373