回复:请教:多重背景调用是否要填写实参?

坏笨笨

  • 帖子

    406
  • 精华

    4
  • 被关注

    48

论坛等级:侠士

注册时间:2010-03-17

普通 普通 如何晋级?

发布于 2015-09-08 13:27:52

20楼

IN或者out类型的无所谓空和不空,因为当你声明一个背景数据块的时候地址已经分配好了,那就是个实参的copy。in_out类型,简单数据类型in_OUT保存实参地址(or指针?),复杂类型不管你空或者不空都是6个字节,保存指向复杂类型数据的指针地址。所以,事实上都是分配好的。但是in_out类型要注意的是,不能空,虽然允许,但是实际上我们在做实际编程的时候不可以空。因为空的话,in_out里面保存的指针是未确定的值,不知道指到哪儿去了。如果你在程序里引用了,那就非常糟糕的事情。

总结下:多重背景数据块,in/out不管是简单或者是复杂类型都无所谓空或者不空,因为是实参的copy,各位难道都没发现in/out在声明的时候可以有个默认值的么?这个默认值就是在你空着的时候(没实参可copy的时候)默认的输入或者输出。而in_OUT则完全不同,它保存的是实参的指针,指针必须有确定的指向不然就是个野指针,在执行的时候不知道会指到什么地方去,这也是不建议编程的时候空的本质原因。

楼主,你的sample时候问题的,你只验证了in/out当然空着也无所谓了。


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54716条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。