***WARNING L15: MULTIPLE CALL TO SEGMENT
今日来说说*** WARNING L15: MULTIPLE CALL TO SEGMENT这个问题!
剖析一下 发生这一正告的一个本源是:例如在主循环里调用了一个函数,而在中止服务中,你又一次调用了相同的函数。这样当主循环运转到该函数中时, 一旦发生中止,则在中止里又再次调用该函数!而使得该子函数发生了重入,这时,经管概率很低,可是很或许犯错!这样,编译器就给出了正告!告知你*** WARNING L15: MULTIPLE CALL TO SEGMENT ,表达的意思是发生了重入!字面意思自己了解去吧~~~
想要防止这种状况的办法
一.用reentrant使函数重入
关于reentrant的阐明:
1,重入函数不能传递bit类型的参数和变量;
2,重入函数树立的是模仿仓库区,所以不运用一般函数坐落存储形式默许空间的可掩盖式仓库,而是在同一空间从顶端另行分配一个非掩盖式的重入仓库。
3,因为要保存参数和局部变量,所以会耗费很大的栈空间;尽量少用这种形式;
4、
5、
二.假如空间多的话,能够界说两个同功用的函数,分别在中止和中止外调用
其他办法没研究出来,嘿嘿~~~对了 我主张用第二种办法好点,第一种有些约束,不爽~~
三.主程序调用该函数时制止中止。
能够在该函数被调用时用#pragma disable句子来完成制止中止的意图。有必要运用OVERLAY指令将该函数从掩盖剖析中除掉。
最终,WARNING L15: MULTIPLE CALL TO SEGMENT