Show/Hide Toolbars

XSharp

 

启用 -fox2 编译器选项是为了支持与 foxpro 兼容的数组。它可启用/禁用以下功能:

为数组赋值时,将用该值填充整个数组

支持括号数组访问。
如果编译器遇到可能是数组访问的代码,如 Foo(1,2),它会检查 Foo() 是否是声明为 foxpro 数组的局部(变量)或字段。如果是,就会访问数组元素。如果没有声明 Foo,那么这可能是对当前方法/函数范围之外声明的动态内存变量的数组访问。编译器将在运行时生成代码来解决这个问题(就像 FoxPro 所做的那样)

前提

-fox2编译器选项必须与-memvar编译器选项和FoxPro方言一起使用。

示例

LOCAL a
 Dimension a(10)
 a = 42         // 如果使用 /fox2 编译器选项,数组中每个元素都将填入 42 。
                // 如果没有该选项,变量(类型)将从数组变为数字

Function Main()
Dimension foo(2,5)
 foo = 42         // 使用 /fox2 时,将填充数组
 ? foo(1,2)       // 则返回元素 1、2。如果没有 /fox2,将调用下面的 Foo 函数
 ? Foo[1,2]       // 总是返回元素 1,2
 
FUNCTION Foo(n1, n2)
? n1, n2
RETURN n1 * n2

请注意

fox2 编译器选项会生成一些额外的代码,以便在运行时决定采取何种操作。

只有真正需要这一功能的代码才建议使用。

您可以使用 #pragma 选项 为某些源文件甚至某些函数启用或禁用 fox2