【仓颉】一、Hello,World!单文件编译与文件夹编译-3.整包编译调用-编写一个包含包调用的Hello,World

继续使用刚才的工程。

我们这次的目标是:用main函数调用另一个包里的打印函数输出HelloWorld。

与前一节不同:

1:需要验证包调用的正确方式

2:需要编写一个可以公开的函数

3:需要对整包进行编译(不再采用单文件编译)

创建log目录,创建myprint.cj文件:

在这里插入图片描述

包名log,与文件夹名称一致。

myPrint为待调用的函数,msg为传入的参数。打印时以字符串插值的方式输出。

我们暂时没有考虑命名规范。仓颉语言中,需要包之间调用的函数需要声明为public。函数参数类型是后置的。

变量:

变量的用法更像是rust的变量声明方式,需要初始化变量,需要let a:Int32 = 0或var a:Int32=0,而不采用a:=0或int a = 0。不需要初始化的声明,采用var a:Int32这样的方式。

有初始化时,变量类型可以由编译器推断,写成let a = 0

变量没有所有权一类Rust为了避免gc而引入的复杂逻辑。

函数:

关键词func。默认函数是private。返回值举例:

func add(a: Int64, b: Int64): Int64

采用”:返回值类型”来定义函数返回值。

改造main.cj为:
在这里插入图片描述

完整的文件结构如下:

在这里插入图片描述

整包编译:

通过文档介绍我们看到cjpm工具是包管理工具,其中有build参数可以进行构建。

因此我们使用cjpm工具,先对包进行初始化,再进行构建。

1:cjpm init初始化生成cjpm.toml文件

2:cjpm build编译生成release

在这里插入图片描述

cjpm管理过程比较类似go语言,go build,go mod init。

cjpm也可以管理生成带调试信息的目标文件,命令为:cjpm build -g生成debug。

如果有压缩输出、静态链接等需求,就需要修改cjpm.toml进行实现了。暂且不细说。

生成路径如下:
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值