函数 (Functions)

Zig 中的函数使用 fn 关键字声明。

声明

函数必须指定参数类型和返回类型。

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

如果函数不返回值,返回类型为 void

fn printHello() void {
    std.debug.print("Hello\n", .{});
}

参数

函数参数是不可变的(immutable)。如果你需要修改参数,必须传递指针。

fn increment(value: *i32) void {
    value.* += 1;
}

递归

Zig 允许函数递归。

fn fib(n: u32) u32 {
    if (n <= 1) return n;
    return fib(n - 1) + fib(n - 2);
}

注意:对于深度递归,可能会发生堆栈溢出。Zig 编译器会尝试推断堆栈使用情况,但对于递归函数,通常无法准确推断。

extern 函数

用于声明在其他地方(如 C 库)定义的函数。

extern "c" fn printf(format: [*:0]const u8, ...) c_int;

inline 函数

可以使用 inline fn 提示编译器在调用点内联函数体。

inline fn add_inline(a: i32, b: i32) i32 {
    return a + b;
}

这不仅是优化提示,有时对于某些编译时逻辑是必需的。

另请参阅: