Show/Hide Toolbars

XSharp

Navigation: X# 文档 > X# 入门 > 方言

所有非 Core 方言

Scroll Prev Top Next More

 

在编译任何非 Core 方言时,编译器和运行时会有以下 "特殊 "行为:

编译器

允许在 NEXT、ENDDO 等关键字后使用 "垃圾"。

 

不允许使用 DOT('.') 操作符调用实例方法。

 

需要引用 XSharp.Core 和 XSharp.RT 动态链接库。

 

字符串比较映射到 XSharp 运行时中的函数。

 

根据编译器选项 -vo2 的不同,NULL_STRING 会被编译为 "" 或 NULL。

 

支持字面量符号(#SomeName)。

 

字符串"="操作符被映射为 XSharp 运行时中的函数。

 

不支持特定的 X# 类型,如 DATE、ARRAY、SYMBOL、FLOAT 和 USUAL,但需要运行时的引用。

 

添加了对动态内存变量和未声明变量的支持。

 

字符串字面量使用单引号(Vulcan 除外)。字符文字必须以 c 为前缀,如:cChar := c'A'

 

允许使用 ASend() 为 X# 数组中的每个元素调用方法。

 

"=" 操作符可用于赋值,但使用时会产生警告。

 

增加对 BEGIN SEQUENCE ... END SEQUENCE 的支持。

 

增加了对 ALIAS (->) 操作符的支持。

 

增加了对 FIELD 语句的支持。

 

支持宏编译器和 &(变量) 语法。

 

增加了对 ARRAY OF <type> 语法的支持。

 

编译器的生成函数类名为
       <AssemblyName>.Functions (DLLs)                                用于函数和全局
       <AssemblyName>.Exe.Functions (EXEs)                        用于函数和全局

 <AssemblyName>.Exe.$<ModuleName>$.Functions        用于静态函数和全局

 

编译器会添加几个特性(attribute)(在 XSharp.Core 中定义),用于描述默认命名空间和编译器版本。

 

编译器为 EXE 文件生成代码,在 Runtimestate 中设置多个属性,以匹配编译器选项和主程序的方言。

 

过程不能具有返回值。

 

增加了对非类型化变量和返回值的支持。

 

支持非类型化函数和方法参数(所谓的 Clipper 调用约定)。

 

增加了对后期绑定代码的支持(需要 -lb 编译器选项)。

 

增加了对 INIT 和 EXIT 过程的支持。

 

添加了对 Codeblocks 的支持(带有 USUAL 参数数组和 USUAL 返回值的非类型 Lambda 表达式)。

 

允许在方法调用中跳过参数。跳过的参数被假定为 NIL。

运行时(Runtime)

默认 RDD 除 FoxPro 方言外均为 DBFNTX