回复:S7-200Smart子程序编程思路之一

已锁定

holdkcsxyz

西门子1847工业学习平台

  • 帖子

    1561
  • 精华

    24
  • 被关注

    162

论坛等级:至圣

注册时间:2015-06-03

白金 白金 如何晋级?

发布于 2022-09-19 16:47:04

35楼

拼凑一些最后的结贴语:

       把C语言和Smart的编程语言比较是不妥的,毕竟C语言强大,但它们也有一些相似性,或者说Smart的编程风格部分的继承(base),并重新定义了(override)C的某些风格.这个帖子对应着<【探讨】子程序多处调用,但又不得同时调用的问题>.

       很多资料说指针以及Char类型(8bits位的字节byte)是C的灵魂.而在C语言里面对声明类型的解读有时足以”劝退”一些入门者比如对下面这个声明的解读const* (*s(int sig,void(*func[3])(int)))(int)虽然是不提倡做这样的声明,但还是会在好些地方看到这种类型声明;而在Smart里面由于编译器的原因可以没有这些声明,没有了这些"烧脑"的类型声明Smart的编程语言比C语言"和蔼"多了,一般来讲Smart的指针基本可以看成是void*型的"万能指针":void*指针是一个可以指向任何数据类型的指针,但是我们暂时先不明确的声明定义它指向的是什么类型;在解引用的时候,先进行类型转化到我们想要的类型!这也类似于C++讲的泛型,它也可能对应着一些环境中的不定长结构体数组/不定长UDT数组/不定长的引用,C#的集合里氏转换......;而且Smart几乎每一条指令基本都带有对(void*型的指针)强制类型转换的作用:就是这些指令在解引用取内容时以指令操作数类型来确定(void*型的指针)指向的数据类型,比如我用到浮点加法:就把取到的指针内容强制的看成是浮点数,至于正不正确取决于用这条指令的人.

      把 "动作数据化"是很多编程语言加强的方向之一:它要求把函数(方法)这些有"动作的过程"完全看作成数据,而中级C语言的函数指针(类似委托)初步具备"动作数据化"的可能,因此它也是很重要的一个技巧.  

      不恰当的比喻:(1)博途编译环境以及(2)Smart的编译环境类似于(1)规范安全高效(2)自由开放并包这两种风格;而这两种交互风格又类似(1)IOS和(2)Android;编译风格类似(1)C#/JAVA和(2)C/C++;性价比类似(1)阳春白雪和(2)下里巴人.它们都是有自己的"市场".

评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9140条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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