跳轉到內容

Futurebasic/語言/參考/begin union

來自華夏公益教科書,自由的教科書

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 字串。

沒有特別的註釋。

dim record...dim end record; dim; begin record

語言參考

華夏公益教科書