2726|0

2

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

小弟想在iccavr 7.22版本下后插法建立单链表但是编译不通过 [复制链接]

小弟想在iccavr 7.22版本下后插法建立单链表但是编译不通过
程序如下
#include
#include
#include
#include

  typedef struct mac_id
{
   unsigned char id_num;
   unsigned char mac_addr[4];
  } mac_id_type;

  typedef struct node
{
   mac_id_type mi ;
   struct node * next ;
  }linklist ;
//用尾插法建立一个只有一个几点的单链表
void main(void)
{
        unsigned char j = 0;       
        unsigned char i = 0;
        unsigned char r = 0;
        unsigned char mstr_id_num = '0';
        unsigned char mstr_mac_num[4];
        unsigned char slave1_id_num = '1';
        unsigned char slave1_mac_num[4];
        unsigned char slave2_id_num = '2';
        unsigned char slave2_mac_num[4];
        linklist *l,*end,*nw;//链表的头指针L 尾指针end 新建节点指针new
        mac_id_type  macid; //mac_id_type结构体类型的变量
        mac_id_type * midp;// 指向mac_id_type结构体类型的指针
        macid.id_num = mstr_id_num;//macid变量的属性赋值
        l=NULL;// 链表的头指针L首先给个空地址
        end=l;// 链表的尾指针指向链表的头指针也为空
    mstr_mac_num[0]='0';
        mstr_mac_num[1]='0';
        mstr_mac_num[2]='0';
        mstr_mac_num[3]='0';
        slave1_mac_num[0]='0';
        slave1_mac_num[1]='0';
        slave1_mac_num[2]='0';
        slave1_mac_num[3]='1';
        slave2_mac_num[0]='0';
        slave2_mac_num[1]='0';
        slave2_mac_num[2]='0';
        slave2_mac_num[3]='2';
        for(i=0;i<4;i++)
        macid.mac_addr=mstr_mac_num;//macid变量的属性赋值
        midp = & macid;//mac_id_type结构体类型的指针指向mac_id_type结构体类型的变量
    nw=(linklist *)malloc(sizeof(linklist));//分配一块linklist类型字节大小的存储空间 返回空间首地址给新建链表节点指针            
   nw.mi.id_num = midp.id_num;//新建链表节点的属性赋值
   for(r=0;r<4;r++)
   nw.mi.mac_addr[r]=midp.mac_addr[r];//新建链表节点的属性赋值
        if(!l) //如果头结点不存在
        l=nw;//则头指针指向新建节点
        else
        end.next=nw;//如果头结点已经存在,新建节点的地址给头节点的NEXT指针
        end=nw;//尾指针指向新建节点
        if(end)//如果链表不为空
        end.next=NULL;
}
在单独编译    nw=(linklist *)malloc(sizeof(linklist));时编译不通过
出现如下错误
!ERROR Function 'putchar' not defined. This is a hardware dependent

function,
  and it is not included in the ICCAVR default library. Please implement
  this function to match your target requirements. You can find examples
  of this function under the \examples.AVR directory. Make
  a copy of a suitable example, add it to your project and modify it if
  needed. The source code must #include the appropriate C header file
  (e.g. stdio.h) as it contains the special compiler pragma for 'putchar'.
!误差函数“的putchar”没有定义。这是一个依赖于硬件的功能,
  并且它不包含在ICCAVR默认库。请执行
  此功能以符合您的目标要求。你可以找到例子
  的\ examples.AVR目录下此功能。使
  一个合适的例子的一个副本,把它添加到你的项目,如果修改
  需要的。源代码必须的#include相应的C头文件
  (如stdio.h中),因为它包含了特殊的编译器pragma对'的putchar“。

这句程序    nw=(linklist *)malloc(sizeof(linklist)); 是照着书上写的
真不知道哪里错了 就大神指点 万分感谢 感激不已
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表