8158|3

87

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

mspace on parameter ignored [复制链接]

同志们帮俺看看吧,按又遇到难题了,自己能力有限,只能求救了,阿米托佛……
我用keil c编写程序后出现一系列警告,
send_peli.c(99):warning c258:'num2':mspace on parameter ignored

***warning l16:uncalled segment,ignored for overlay process
最重要的是搞明白原因,那位大虾明白解释一下?
我出错的源程序如下
void rcv_signal(unsigned char xdata num2)
{
    unsigned char xdata mid;

    if(RI==1)
    {
       RI=0;
       mid=SBUF;
       num2=mid;
    }
}

最新回复

刚刚碰到一样的问题,看了一下,基本说明问题,大家参考一下(感谢下论坛上的另外一位忘记名字的朋友) kiel c51函数定义中不支持存储位置说明符,如data, idata,xdata等,但貌似指针的目标类型可以声明,如果需要指定参数和内部变量的存储位置,可以使用small、large、compact对函数进行说明,这样可以将参数和局部变量分配在对应的存储空间 例如: char Func1(char idata* addr,char counter)small; 需要时局部变量可以特殊说明存储位置类型,具体可以参考keil软件的帮助文档或使用说明,Erro258的说明,摘抄一下,E文好的朋友可以自己理解 Error/Warning C258 memory-space Illegal on Struct/Union Member Summary   *** Error/Warning C258     memory-space Illegal on Struct/Union Member     memory-space on Parameter Ignored Description   Memory types may not be specified for members of struct and union types or for function parameters. Objects referenced by pointers may contain a memory type.   Cause   A memory type (code, xdata, data, ...) was specified for a struct or union member or for a function argument. For example: unsigned char function (   unsigned int xdata parm_1,   unsigned char data parm_2) { } Resolution   Remove the memory type from the struct, union, or function definition. These objects have very specific storage requirements which may not be altered using memory types.   Example   struct vp { char code c; int xdata i; }; generates error 258. struct v1 { char c; int xdata *i; }; is the correct declaration for the struct. Copyright (c) Keil Software, Inc. and Keil Elektronik GmbH. All rights reserved.   详情 回复 发表于 2016-3-17 17:31
点赞 关注

回复
举报

80

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
void rcv_signal(unsigned char xdata num2)
形参列表错了。编译器不能包含在列表中出现有存储类型的标识符。也就是你的xdata!
你可以换做一个指向他的指针。 你可以删掉xdata试一试。或者改成下面这个试一试
void rcv_signal(unsigned char xdata *num2)
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
我也遇到这个问题了,但是我的程序用的是指针啊
void Hex_Bcd3(Word XDATA hex,Byte XDATA *arr )
{
XDATA  Byte number1,number2,number3;
number1=hex/100;
number2=(hex-=number1*100)/10;
number3=(hex-=number2*10);
arr[0]=number1;
arr[1]=number2;
arr[2]=number3;
}
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

4
 
刚刚碰到一样的问题,看了一下,基本说明问题,大家参考一下(感谢下论坛上的另外一位忘记名字的朋友)
kiel c51函数定义中不支持存储位置说明符,如data, idata,xdata等,但貌似指针的目标类型可以声明,如果需要指定参数和内部变量的存储位置,可以使用small、large、compact对函数进行说明,这样可以将参数和局部变量分配在对应的存储空间
例如: char Func1(char idata* addr,char counter)small;
需要时局部变量可以特殊说明存储位置类型,具体可以参考keil软件的帮助文档或使用说明,Erro258的说明,摘抄一下,E文好的朋友可以自己理解

Error/Warning C258
memory-space Illegal on Struct/Union Member
Summary   *** Error/Warning C258
    memory-space Illegal on Struct/Union Member
    memory-space on Parameter Ignored


Description   Memory types may not be specified for members of struct and union types or for function parameters. Objects referenced by pointers may contain a memory type.  
Cause   A memory type (code, xdata, data, ...) was specified for a struct or union member or for a function argument. For example:
unsigned char function (
  unsigned int xdata parm_1,
  unsigned char data parm_2)
{
}


Resolution   Remove the memory type from the struct, union, or function definition. These objects have very specific storage requirements which may not be altered using memory types.  
Example   struct vp { char code c; int xdata i; };
generates error 258.

struct v1 { char c; int xdata *i; };
is the correct declaration for the struct.


Copyright (c) Keil Software, Inc. and Keil Elektronik GmbH. All rights reserved.

赞赏

1

查看全部赞赏

 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表