Futurebasic/语言/参考/编译
外观
	
	
✔ 外观 ✔ 标准 ✔ 控制台
COMPILE [tickCount][,compileFlags]
虽然可以在源代码中放置自己的编译语句,但这最好通过在编辑器的首选项窗口中选择项目来完成。在源代码中放置 COMPILE 语句将使编辑器中进行的大多数选择失效。
COMPILE 语句用于更改程序的编译方式。该语句是可选的:如果使用它,它不应在程序源代码中出现多次,除非可能在 COMPILE LONG IF 块的不同分支内。它是一个非可执行语句,因此不能通过将其放在条件执行结构(如 LONG IF...END IF)中来改变其效果。但是,可以通过将其放在 COMPILE LONG IF 块中来有条件地将其包含或排除在程序之外。
通常,COMPILE 语句是程序中的第一条语句。
tickCount 设置操作系统调用之间发生的最佳计时器数量。
compileFlags 是一个或多个符号常量名称的列表(用空格分隔),这些名称是从下面描述的集中选择的。compileFlags 也可以包含单个整数常量,该常量等于各个符号常量的总和。
| 标志 | 描述 | 默认值 | 
| 
 | 为变量在应用程序堆中分配指针(仅在编译代码资源时适用)。 | 在应用程序堆中分配句柄。 | 
| _sysHeapVars (2) | 为变量在系统堆中分配句柄(仅在编译代码资源时适用)。 | 在应用程序堆中分配句柄。 | 
| _macsBugLabels (4) | 生成 MacsBug 需要的必要信息,以显示程序的标签和函数名。这是一个用于调试的有用功能,但会使编译后的代码稍微变大。 | 不生成 MacsBug 信息。 | 
| _strResource (8) | 将程序中找到的所有字符串常量存储为 STR# 资源。 | 不创建 STR# 资源。 | 
| _dimmedVarsOnly (32) | 如果在用 DIM语句显式声明之前遇到任何变量,则会生成错误。 | 非数组、非记录变量不需要 DIM(隐式声明为在代码中出现)。 | 
| _noRedimVars(64) | 如果 DIM语句包含在同一作用域(可能在先前的DIM语句中)之前遇到的变量,则会生成错误。 | 任何包含之前遇到过的变量的 DIM都将被忽略。 | 
| _dontOptimizeStr (256) | 阻止编译器在应用程序中创建 STR# 资源时删除重复字符串。这仅在也设置了 _strResource标志时适用。 | 编译器删除重复字符串。 | 
| _ChgConfig (32768) | 指示编译器在编译此程序时覆盖“首选项”对话框中指定的选项(请参阅下表)。 | 使用当前的“首选项”选项。 | 
| _IncludeCDEF (65536) | 将自定义 CDEF 资源(用于日内瓦 9 点字体或窗口文本)添加到编译后的应用程序中。 | 不要添加资源。 | 
| _IncludeMDEF (262144) | 将自定义 MDEF 资源(用于日内瓦 9 点菜单文本)添加到编译后的应用程序中。 | 不要添加资源。 | 
| _IncludeWDEF (524288) | 将自定义 WDEF 资源(用于风窗式调色板)添加到编译后的应用程序中。 | 不要添加资源。 | 
| _ToolboxCall¬ | 如果对 Toolbox 过程的引用没有以 CALL关键字开头,则会生成错误。 | CALL关键字是可选的。 | 
| _ToolboxCall¬ | 在 Toolbox 过程引用中, CALL关键字是可选的。这与默认值相同。 | CALL关键字是可选的。 | 
以下示例告诉编译器为 MacsBug 生成程序标签和函数名,并要求显式声明所有变量。如果代码用于应用程序,则会忽略 Tickcount。
COMPILE 0, _MacsBugLabels _dimmedVarsOnly