Skip to content
zig 版本:0.15.1

defer

defer 将在当前作用域末尾执行表达式。

如果存在多个 defer,它们将会按照出栈方式执行。

zig
const std = @import("std"); const print = std.debug.print;  pub fn main() !void {  defer print("exec third\n", .{});   if (false) {  defer print("will not exec\n", .{});  }   defer {  print("exec second\n", .{});  }  defer {  print("exec first\n", .{});  } }

defer 分别可以执行单个语句和一个块,并且如果控制流不经过 defer,则不会执行。

对应 defer 的还有 errdefer,具体见这里 errdefer