报告组织,发现编译警告,小兵思想活动和实际行为如下,请组织检阅——WinCC C

已锁定

Ken(小释)

  • 帖子

    285
  • 精华

    19
  • 被关注

    14

论坛等级:侠士

注册时间:2008-11-13

普通 普通 如何晋级?

报告组织,发现编译警告,小兵思想活动和实际行为如下,请组织检阅——WinCC C

4957

6

2011-10-25 14:52:28

star star star
以前写了个 《单行脚本:让一个按钮翻转一个变量的状态!主要是解决有些朋友问的VBS下的翻转》的帖子,近期出差归来,发现划痕大侠很细心很仔细的发现一个问题。说明划痕大侠是很爱动手的,因为没有动手的人是很少会发现这个警告的。我也很少注意警告,以前经常听人说有10000个waring也不能有1个error。呵呵,所以看waring。
————————————————————————————
Tag为你想翻转的一个Boolean型变量。
C代码如下
SetTagBit("Tag",!GetTagBit("Tag"));
//得到Tag的值取非,写回去!

VBS代码如下
HMIRunTime.Tags("Tag").Write(Not CBool(HMIRunTime.Tags("Tag").Read))
//得到Tag的值,先转换成Boolean型,再取非,写回去!

说明:VBS里面为什么要多一个步骤CBool()呢?是因为HMIRunTime.Tags("Tag").Read返回的是一个数值,数值的0取反等于-1,数值1取反等于-2。
NOT是一个取反运算!只有操作对象为Boolean型的时候才是取非
帖子地址如下:
http://www.ad.siemens.com.cn/club/bbs/post.aspx?b_id=5&a_id=856783&s_id=17&num=6#anch
quote:以下是引用划痕在2011-10-24 16:39:09的发言:
今天才注意到这个帖子,就简单补充一下:
将Boolean量取反输出的C代码严谨的写法如下
SetTagBit("Tag",(short)!(GetTagBit("Tag")));
//得到Tag的值取非,写回去!
而此语句SetTagBit("Tag",!GetTagBit("Tag"));//在编译过程中会出现警告


仔仔细细的看完划痕的回复,思想活动和动作过程如下:
1.不用编译器,不用环境。我肉眼看上去,百思不得其解,这个逻辑,这个变量长度都不会有错啊!
2.所以我打开了我心爱的VM,快速的Resume了我WinCC 6.2 Sp2 Asian。测试!
3.测试结果 Warning(0011) : conversion may loose information
4.乖乖 还真有报错? 胡乱翻译一下:转换可能丢失信息 我:意思是说这里面涉及到数据类型的转换?
5.仔细一看都是Boolean型的操作啊?等等……Boolean型?我记得很多C编译环境都不支持Boolean啊!我们以前要用Boolean 都是
#define TRUE 1
#define FALSE 0
GetTagBit("Tag")明明白白的写着return type 是BOOL 难道我对它的返回值进行!操作就要报错?
6.再做测试 !GetTagBit("Tag"); 测试结果:没有错误!
7.奇怪了,不急不急 还有半截我们没有测试呢 SetTagBit 先看看它的定义!
SetTagBit
Function
Sets the value of a tag of data type "Binary tag".
Syntax
BOOL SetTagBit(Tag Tag_Name, short int value);

Tag_Name
name of the tag

value
Value of the tag in the data type "short int"

8.乖乖,看见没 看见没人家清清楚楚明明白白的写着 Short Int 短整型啊!
9原来 SetTagBit(Tag, value); 中的value是短整型,这里我们将一个布尔型“隐式”的转换成了一个短整型。就相当于用更大的存储空间存了一个需要空间很小的值。出现了存储空间大小的变换。所以出现警告,但是这个警告完全可以不去纠结它,因为是小到大,不是大到小。不会loose information的!
放心使用!
报告组织思想活动和实际行动汇报完毕!
BTW: 划痕大侠 我咋感觉我们认识呢?好像还在哪里一起讨论过问题!好像是PCS7的问题的!
报告组织,发现编译警告,小兵思想活动和实际行为如下,请组织检阅——WinCC C 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC WinCC / Panel

共有32566条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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