MCC18和PICC使用中发现的问题

2020-02-10 08:48发布

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;

哪位大侠能指点一下?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
2条回答
buffalo
1楼-- · 2020-02-10 12:11
我的程序中,用了大量的指针的指针作为函数的参数,很多处理都涉及到指针的移动和比较,上面提到的两个问题,经过修改,编译都过了,但是,实际运行结果却一沓糊涂。例如:
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!!!
machunshui
2楼-- · 2020-02-10 12:32
再次跟楼主说没有问题

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

cp1 = buffo;
cp2 = buffo + 0x21u;

if (cp1 < cp2){...}

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

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

而不是没搞清楚,

就瞎怀疑.

一周热门 更多>