启用 -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