程序入口

仓颉程序入口为 main,源文件根目录下的包的顶层最多只能有一个 main

如果模块采用生成可执行文件的编译方式,编译器只在源文件根目录下的顶层查找 main。如果没有找到,编译器将会报错;如果找到 main,编译器会进一步对其参数和返回值类型进行检查。需要注意的是,main 不可被访问修饰符修饰,当一个包被导入时,包中定义的 main 不会被导入。

作为程序入口的 main 可以没有参数或参数类型为 Array<String>,返回值类型为 Unit 或整数类型。

没有参数的 main

// main.cj main(): Int64 { // Ok. return 0 }

参数类型为 Array<String>main

// main.cj main(args: Array<String>): Unit { // Ok. for (arg in args) { println(arg) } }

使用 cjc main.cj 编译完成后,通过命令行执行:./main Hello, World,将会得到如下输出:

Hello, World

以下是一些错误示例:

// main.cj main(): String { // Error, return type of 'main' is not 'Integer' or 'Unit'. return "" }
// main.cj main(args: Array<Int8>): Int64 { // Error, 'main' cannot be defined with parameter whose type is not Array<String>. return 0 }
// main.cj // Error, multiple 'main's are found in source files. main(args: Array<String>): Int32 { return 0 } main(): Int8 { return 0 }