恭喜,你发布的帖子
发布于 2017-12-14 14:54:06
16楼
楼主,你估计,你做一个按钮启动按钮停止接触器自锁的这样的基本程序,你能够做成库程序,并可以完美使用吗?
你说过“按道理说局部变量是不会存在地址冲突的。”这个道理,你从哪里得到的消息的?你认真核实一下消息来源。
在同级子程序里面使用的L是同一个L,是相同的64字节的空间。所有级之间使用各自级所属的64字节空间。中断使用属于中断的64字节,中断属下下级的子程序以及所属嵌套,使用我暂未明确。
那么,你多次调用同一个子程序,也就是说(假设)主程序调用10次你这个子程序,这10次调用都是赋予一级子程序的级别,那么这10次都是使用相同的一片L空间。所以他们之间是共享这64字节的。也所以,他们之间是互相影响的。
你需要从共享的区域中重新安排属于本次调用的数据,你可以使用in或者in/out参数,从调用开始时,向L区注入适当的新值(此动作是系统完成的)。
L区仅仅是为你提供临时使用的空间让你开展运算,并没有义务为你保留任何值。因为你的调用一旦离开,轮到其他(一级)子程序使用的时候,别人也会把你的痕迹清场,开展他自己的工作。任何你觉得需要保留的数值,你必须使用in/out或者out参数把数据拉出去保存。(这个也是系统完成的)
以上一入一出的行为,就像你租用图书馆一个卡位进行做功课、自习。你必须带上自己的未完成作业,进去做,然后把做好的作业带回家。即使作业未完成,也要把做了一半的作业带回家。你明天再次进来的时候,你将不再看得见自己昨天的痕迹。(除非你离开之后再没有人来过。有这个可能性,那就是变成了一级子程序仅仅有一个。那就不是多次调用了。)
你必须明白,这个区域是共享的。但是不同于其他绝对地址的全局共享。
道理就先说这么多。你还是想想我头一行字给你的题目。看看?
请填写推广理由:
分享
只看
楼主