首页 > 其他分享 >无废话zig系列 导入自定义api

无废话zig系列 导入自定义api

时间:2022-11-06 10:58:33浏览次数:64  
标签:std mylib 自定义 zig api main math

环境: ubuntu 22.04 zig 0.10

首先打开终端, 建立zig exe项目:

mkdir libtest 
zig init-exe 

项目结构如下:

├── build.zig
└── src
    ├── main.zig
    └── mylib
        └── math.zig
  1. 导入自定义api
    打开main.zig:
    删除多余的代码,保留如下:
const std = @import("std");

pub fn main() !void {
    // Prints to stderr (it's a shortcut based on `std.io.getStdErr()`)
    std.debug.print("All your {s} are belong to us.\n", .{"codebase"});
}

使用zig build run 编译运行
如编译无错误,则看到输出 All your codebase are belong to us.

在libtest目录下新建目录mylib, 同时添加自定义api文件math.zig内容如下:

pub fn add(a: u32, b:u32) u32 {
    return a + b;
}

注意fn之前必须添加pub 否则该函数将无法导出被调用
在main.zig中添加调用代码如下:

const std = @import("std");

const math = @import("../mylib/math.zig");

pub fn main() !void {
    // Prints to stderr (it's a shortcut based on `std.io.getStdErr()`)
    std.debug.print("All your {s} are belong to us.\n", .{"codebase"});

    var ret = math.add(2 ,3);
    std.debug.print("ret: {d}\n", .{ret});
}

再次使用zig build run编译运行,出现错误
error: import of file outside package path: '../mylib/math.zig'
提示导入的文件超出了包的路径范围, 把mylib移动至src目录下,新的项目结构如下:

├── build.zig
└── src
    ├── main.zig
    └── mylib
        └── math.zig

再次编译运行

All your codebase are belong to us.
ret: 5

自定义api运行成功。

标签:std,mylib,自定义,zig,api,main,math
From: https://www.cnblogs.com/bsd80/p/16861885.html

相关文章

  • C语言初级阶段6——自定义数据类型
    C语言初级阶段6——自定义数据类型阐述1.构造数据类型:用户自己建立的数据类型(自定义数据类型)。2.C语言中的自定义数据类型:数组类型、结构体类型、共用体类型和枚举类型......
  • 从vue3+TS项目中导入vue组件路径不识别的问题中认识vue3的组合式API中的常用组件
    最近在使用vite创建vue3+ts项目时,不经意发现一些小问题,对这些小问题进行深究的时候,会加深我对vue3的一些新理解今天碰到的一个问题就是我使用vite创建一个vue3+Ts项目后,......
  • springboot自定义starter集成controller、Dao
    springboot自定义starter集成controller、Dao编写starer,其他服务直接引入既可以,通常步骤为:pom中引入需要的依赖删除spring-boot-maven-plugin插件resources下新建spring.fac......
  • Android 自定义TextView实现文字和图片居中显示
    默认情况下,如果TextView的宽度超过文字的宽度,文字居中显示时,想要在文字的左边或者右边添加一个图片时,左边或者右边的文字就会默认以左边和右边开始排列,效果如下。如果想要......
  • 字符串API
    字符串-引用类型可以理解为一个存储字符的数组关于字符串的常用方法staticvoidMain(string[]args){stringstr="HelloWorld";//字符串长度Conso......
  • PX01如何实现自定义循环老化画面、开关机冲击及自动关机
    屏在做实验室老化的时候,可能会需要对屏进行多种画面循环老化测试一定时间,完毕后自动关机下电;而循环画面要求也相对复杂,可能会有多种循环画面测试,而且每种循环次数不同,画面......
  • java常用API--->ArryList集合基础
    简述集合和数组的对比数组长度固定,集合长度可变。数组可存储基本数据类型和引用数据类型,集合只能存储引用数据类型,如果要存储基本数据类型要将其变成包装类Arrylis......
  • 自定义异常类
    1.继承现有异常结构,RuntimeException或者Exception2.提供全局常量:erialVersionUID 3.提供重载构造器4.在项目中即可调用throw MyException("不能。。。");publi......
  • ZYNQ & AXI总线 & PS与PL内部通信(用户自定义IP)
      ZYNQ、AXI协议、PS与PL内部通信 三种AXI总线分别为:AXI4:(Forhigh-performancememory-mappedrequirements.)主要面向高性能地址映射通信的需求,是面向地址映射的接......
  • React使用Antd自定义主题报错
    安装包"customize-cra":"^1.0.0","customize-cra-less-loader":"^2.0.0","less":"^4.1.3","less-loader":"^11.1.0",修改config-overrides.jsconst{override......