您的位置 首页 软件

KEILC51正告:WARNING L15: MULTIPLE CALL TO SEGMENT

说说几个小问题吧,一般我们在用KEIL的时候,只要编译器报-0Error(s)一般我们都不去管多少个Warning(s).了,一般这样程序基本都能运行…

说说几个小问题吧,一般咱们在用KEIL的时分,只需编译器报

– 0 Error(s) 一般咱们都不去管多少个 Warning(s).了,一般这样程序根本都能运转,可是其实细心想想,这儿仍是有问题的,不然编译器没事吃饱了撑得,报什么正告啊~~~

今日来说说*** WARNING L15: MULTIPLE CALL TO SEGMENT这个问题!

其实这个问题应该是引起留意的,有或许引起程序抵触,可是一般时分程序运转不会有问题,可是假如出来问题,那将会是很厌烦的问题.

剖析一下 发生这一正告的一个本源是:例如在主循环里调用了一个函数,而在中止服务中,你又一次调用了相同的函数。这样当主循环运转到该函数中时, 一旦发生中止,则在中止里又再次调用该函数!而使得该子函数发生了重入,这时,经管概率很低,可是很或许犯错!这样,编译器就给出了正告!告知你*** WARNING L15: MULTIPLE CALL TO SEGMENT ,表达的意思是发生了重入!字面意思自己了解去吧~~~

想要防止这种状况的办法

一.用reentrant使函数重入

关于reentrant的阐明:

1,重入函数不能传递bit类型的参数和变量;

2,重入函数树立的是模仿仓库区,所以不运用一般函数坐落存储形式默许空间的可掩盖式仓库,而是在同一空间从顶端另行分配一个非掩盖式的重入仓库。

small 默许空间是 data;

compact 默许空间是 pdata;

largr 默许空间是 xdata;

3,因为要保存参数和局部变量,所以会耗费很大的栈空间;尽量少用这种形式;

4、 在同一程序中能够界说和运用不同存储器形式的重入函数,恣意形式的重入函数不能调用不同存储器形式的重入函数,但能够调用一般函数。
5、 实践参数能够传递给直接调用的重入函数。无重入特点的直接调用函数不能包括调用参数。

二.假如空间多的话,能够界说两个同功用的函数,分别在中止和中止外调用

其他办法没研究出来,嘿嘿~~~对了 我主张用第二种办法好点,第一种有些约束,不爽~~

WARNING L15: MULTIPLE CALL TO SEGMENT

这个问题有必要留意,或许引起程序抵触,假定你用于自动化范畴,则或许导致信号发生尖峰。 发生这一正告的一个本源是:你在主循环里调用了一个函数(如aaa),而在中止服务函数里,你用调用了这个函数(如aaa)。这样当主循环运转到该函数中 是,一旦发生中止,则在中止里又再次调用该函数!这时,很或许犯错! 防止这种状况的办法许多:如,在进中止的时分置需调用该函数的标志,而在主循环中调用该函数

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/274887.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部