跳转到内容

Futurebasic/语言/参考/编译

来自维基教科书,自由的教学读物

COMPILE 语句

[编辑 | 编辑源代码]

✔ 外观 ✔ 标准 ✔ 控制台

COMPILE [tickCount][,compileFlags]

虽然可以在源代码中放置自己的编译语句,但这最好通过在编辑器的首选项窗口中选择项目来完成。在源代码中放置 COMPILE 语句将使编辑器中进行的大多数选择失效。

COMPILE 语句用于更改程序的编译方式。该语句是可选的:如果使用它,它不应在程序源代码中出现多次,除非可能在 COMPILE LONG IF 块的不同分支内。它是一个非可执行语句,因此不能通过将其放在条件执行结构(如 LONG IF...END IF)中来改变其效果。但是,可以通过将其放在 COMPILE LONG IF 块中来有条件地将其包含或排除在程序之外。

通常,COMPILE 语句是程序中的第一条语句。

tickCount 设置操作系统调用之间发生的最佳计时器数量。

compileFlags 是一个或多个符号常量名称的列表(用空格分隔),这些名称是从下面描述的集中选择的。compileFlags 也可以包含单个整数常量,该常量等于各个符号常量的总和。

标志 描述 默认值

_pointerVars (1)

为变量在应用程序堆中分配指针(仅在编译代码资源时适用)。 在应用程序堆中分配句柄。
_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¬

  必需

(268435456)
如果对 Toolbox 过程的引用没有以 CALL 关键字开头,则会生成错误。 CALL 关键字是可选的。
_ToolboxCall¬

  不需要

(536870912)
在 Toolbox 过程引用中,CALL 关键字是可选的。这与默认值相同。 CALL 关键字是可选的。

以下示例告诉编译器为 MacsBug 生成程序标签和函数名,并要求显式声明所有变量。如果代码用于应用程序,则会忽略 Tickcount。

COMPILE 0, _MacsBugLabels _dimmedVarsOnly

资源
COMPLIE LONG IF

华夏公益教科书