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 字串。
無特別說明。