Futurebasic/语言/参考/begin union
外观
✔ 外观 ✔ 标准 ✔ 控制台
begin record recordName
dim statements...
begin union
dim statements
end union
end record
联合用于在记录中预留空间,该空间可能包含多个大小不同的变量。以下示例在记录中为不同大小的变量预留了两个相等的偏移量
begin record RecordWithUnion
dim beforeUnion
begin union
dim inUnion1`
dim inUnion2$
end union
end record
dim myTest as RecordWithUnion
myTest.inUnion2$ = "COW"
print myTest.inUnion1
变量 myTest.inUnion1 是一个单字节,它占据字符串 myTest.inUnion2$ 中第一个字节的相同空间。在这种情况下,myTest.inUnion1 恰好是字符串的长度字节,而 print 语句将输出“3”。这种重叠不是必需的,这两个值可能没有相互关系,除了它们在内存中的相同位置开始。
当 FB 遇到 begin union 语句时,会检查所有直到 end union 语句的 dim,并且联合中最大的项将决定编译器预留的空间大小。在上面的示例中,联合将占用 256 字节,因为联合中最大的元素是 256 字节的 Pascal 字符串。
没有特别的注释。