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} _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 级深度。