Futurebasic/語言/參考/begin globals
✔ 外觀 ✔ 標準 ✔ 控制檯
begin globals [statements including variable declarations] end globals
begin globals 和 end globals 語句分別表示全域性變數宣告部分的開始和結束。全域性變數是在程式所有部分都“可見”的變數:也就是說,當進入或退出本地函式時,它會保持其值。透過合理放置 begin globals...end globals 語句,您還可以建立對某些本地函式而言是“全域性”的變數,而對其他函式而言則不是。
begin globals 和 end globals 是“非可執行”語句,因此您無法透過將它們放在條件執行結構(如 long if...end if)中來改變其效果。但是,您可以透過將它們放在 compile long if 塊中來有條件地包含或排除它們。
您可以在程式中包含任意數量的 begin globals...end globals 對,儘管通常全域性變數都定義在一個靠近程式開頭的單獨部分中。您還可以在本地函式中包含 begin globals...end globals 對。它們必須在本地函式中成對出現,並且通常應該在程式的“主”部分中成對出現(“主”部分由所有本地函式之外的那些行組成)。當您在“主”部分包含 begin globals...end globals 部分時,它不應包含任何本地函式,否則變數可能以不可預測的方式被作用域化。
當變數在“主”部分中的第一次出現出現在 begin globals...end globals 部分中時,該變數被宣告為全域性變數,對出現在該部分之後的每個本地函式都可見。在“主”部分中的所有其他變數對“主”部分都是本地的。重要提示:FB 在程式開頭放置一個“隱式”的 begin globals 語句。這意味著預設情況下,在“主”部分中宣告的所有變數都是全域性的。如果您希望在“主”部分中宣告的任何變數對“主”部分都是本地的,則必須在“主”部分中包含 end globals 語句。
當變數在本地函式中的第一次出現出現在 begin globals...end globals 部分中時,該變數被宣告為全域性變數,對該函式及其下面的每個本地函式都可見。如果該變數在“主”部分中的第一次出現出現在宣告為全域性變數的函式的後面,那麼該變數在“主”部分中也是全域性的。本地函式中的所有其他變數對該函式都是本地的,除非它們在之前的某個 begin globals...end globals 部分中被宣告為全域性變數。
關於全域性變數,FB 的預設行為不同於 FutureBasic II 的行為。如果您在程式中既不包含 begin globals 語句,也不包含 end globals 語句,那麼這兩個版本的行為如下所示
FutureBasic II:在“主”部分中宣告的所有變數對“主”部分都是本地的。
現代 FB:在“主”部分中宣告的所有變數都是全域性的。
如果您有一個 FutureBasic II 程式,其中不包含 end globals 語句,則應在程式碼開頭(在宣告任何變數之前)新增 end globals 語句,以便它在 FB 中按預期執行。如果您的 FutureBasic II 程式中已經包含 end globals 語句,則不應該更改它。