发布于 2011-06-01 08:44:32
4楼
这当然很重要的
既然基本数据类型的字节是确定的,那么一个自定义数据类型就是基本数据类型之和,假设是这样算的。
例如现在定义了这样一个数据类型:
TYPE UDT 4
VERSION : 0.1
STRUCT
dDate : DATE ;//这里是4个字节
tTime : TIME ;//这里是4个字节
iData : INT ;//这里是2个字节
END_STRUCT ;
END_TYPE
那么这里我认为UDT4数据类型为10个字节,再重新定义一下
TYPE UDT 4
VERSION : 0.1
STRUCT
dDate : DATE ;//这里是4个字节
tTime : TIME ;//这里是4个字节
iData1 : INT ;//这里是2个字节
iData2 : INT ;//这里是2个字节
END_STRUCT ;
END_TYPE
那么这里UDT4数据类型为12个字节
而假设程序有预处理的函数有如下格式,只是想象
LW0=sizeof(UDT4)
在第一种情况下相当于
L 10
T LW0
在第二种情况下相当于
L 12
T LW0
这两种情况都是自动求出,而编译出来的结果。而不是人工去修改。
我记得在S7-200的论坛里有一篇贴子要求求一个字节内的为1的个数,而有人建议用状态表去数,这意义就不大了。
在这里我想说的就是关于程序预处理
一切皆有可能