Futurebasic/語言/參考/編譯長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} _symbolicConstantTRON [= _false]cpu68KcpuPPCcarbonLib- 以上任何專案的列表,以“
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 級深度。