搜索
bottom↓
回复: 2

MCC18和PICC使用中发现的问题

[复制链接]

出0入0汤圆

发表于 2008-8-21 17:05:04 | 显示全部楼层 |阅读模式
MCC18和PICC使用中发现的问题

MCC18中使用函数指针,即报错如下:

This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.

例如:mibp->get(mvp - mibp->mvp, tabix, &vptr);

PICC18中指针的地址,报错如下:expression syntax。例如:
uint8 *cp;
uint buffo[100];

cp = &buffo;

哪位大侠能指点一下?

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2008-8-22 08:34:50 | 显示全部楼层
我的程序中,用了大量的指针的指针作为函数的参数,很多处理都涉及到指针的移动和比较,上面提到的两个问题,经过修改,编译都过了,但是,实际运行结果却一沓糊涂。例如:
uint8 *cp1;
uint8 *cp2;
uint8 buffo[100];

cp1 = buffo;
cp2 = buffo + 0x21u;

if (cp1 < cp2){...}

以上代码在51、x86、arm7都用过,没有任何问题,但在pic中,编译可以通过,但if逻辑根本不成立,根本运行不到if里面的语句。仿真时将鼠标移到cp1、cp2、buffo上面,显示cp1为0x9f,cp2为0xbc0。

后来反复想,可能是pic的内存分页机制导致的。惨痛的是,我的程序又要重新写了。

后悔使用pic!!!

出0入0汤圆

发表于 2008-8-25 22:44:16 | 显示全部楼层
再次跟楼主说没有问题

uint8 *cp1;
uint8 *cp2;
uint8 buffo[100];

cp1 = buffo;
cp2 = buffo + 0x21u;

if (cp1 < cp2){...}

以上代码能够执行到
if (cp1 < cp2){...}执行体里面.

你即使是怀疑是内存分页机制导致,也应该通过查看汇编语句以及map文件求证,

而不是没搞清楚,

就瞎怀疑.
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-27 18:40

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表