跳轉到內容

Futurebasic/語言/參考/編譯長if

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

COMPILE LONG IF 語句

[編輯 | 編輯原始碼]

COMPILE LONG IF

[編輯 | 編輯原始碼]

✔ 外觀 ✔ 標準 ✔ 控制檯

COMPILE LONG IF condition
   [statementBlock1]
[COMPILE XELSE
   [statementBlock2]]
COMPILE END IF

您可以使用 COMPILE LONG IF 語句有條件地包含或排除從程式的編譯版本中選定的程式碼行。如果需要維護程式的兩個(或更多)稍微不同的版本,則此方法非常有用;COMPILE LONG IF 允許您在同一個原始檔中維護這兩個版本。

如果 COMPILE LONG IF 後面的條件計算為“true”或非零,則 statementBlock1 中的語句包含在編譯中,而 statementBlock2 中的語句(如果有)則被編譯器忽略。如果條件計算為“false”或零,則 statementBlock1 中的語句被編譯器忽略,而 statementBlock2 中的語句(如果有)則包含在編譯中。

condition 必須採用以下形式之一

  • constExpr
  • {DEF | NDEF} _symbolicConstant
  • TRON [= _false]
  • cpu68K
  • cpuPPC
  • carbonLib
  • 以上任何專案的列表,以“AND”或“OR”分隔。您也可以選擇將任何有效的子條件括在括號中。

constExpr 是一個“靜態整數表示式”。靜態整數表示式是指僅包含以下內容的任何有效表示式

  • 整數字面量常數;
  • 先前定義的符號常數名稱;
  • 運算子(如 +、-、*、/、>、=);
  • 括號

(特別是,它不能包含變數,也不能包含函式引用。)如果您使用這種形式的 COMPILE LONG IF,則如果表示式的值為非零,則條件將計算為“true”。

_symbolicConstant 代表符號常數名稱。DEF_symbolicConstant 如果指示的常量先前已定義,則計算為“true”。NDEF_symbolicConstant 如果指示的常量先前未定義,則計算為“true”。

條件 TRON 如果當前程式碼段已啟用除錯,則計算為“true”。條件 TRON = _false 如果當前程式碼段未啟用除錯,則計算為“true”。(有關詳細資訊,請參見 <a href="tron.html">TRON</a> 語句。)

如果您使用關鍵字 cpu68K 作為條件,如果當前編譯正在編譯為 Motorola 680x0(“68k”)機器程式碼,則它將計算為“true”。如果您使用關鍵字 cpuPPC 作為條件,如果當前編譯正在編譯為 PowerPC 機器程式碼,則它將計算為“true”。

由於 COMPILE LONG IF 會導致行(包括非可執行行)被編譯器完全忽略,因此您可以使用它來控制諸如變數、程式標籤、常量甚至整個函式的宣告等內容。例如

COMPILE LONG IF _needBigArray
   DIM myArray&(3000)
COMPILE XELSE
   DIM myArray&(30)
COMPILE END IF

COMPILE LONG IF _dimensions = 3
   DEF FN Diagonal!(a!, b!, c!) = SQR(a!*a! + b!*b! + c!*c!)
COMPILE XELSE
   DEF FN Diagonal!(a!, b!) = SQR(a!*a! + b!*b!)
COMPILE END IF

注意
COMPILE LONG IF 塊可以巢狀到 16 級深度。

Beginassem; Tron
語言參考

華夏公益教科書