/* ===== 模块7:高级特性 ===== * test15_defer — 延迟执行 * 难度:3/5 * 验证点:defer 语句、defer 块、多个 defer(逆序执行)、 * 函数中 defer、块作用域 defer */ @extern(vm) fn vm_printf(fmt: *u8, ...) void; fn with_cleanup() void { defer vm_printf(" inner defer\n"); vm_printf(" inside with_cleanup\n"); } fn main() i32 { vm_printf("--- defer test ---\n"); /* defer 语句 */ defer vm_printf("defer1\n"); vm_printf("after defer1\n"); /* defer 块 */ defer { vm_printf("defer block\n"); } vm_printf("after defer block\n"); /* 函数内 defer */ with_cleanup(); vm_printf("after with_cleanup\n"); /* 多个 defer 应逆序执行出作用域应该立刻执行,包括循环作用域 */ { defer vm_printf("block defer last\n"); defer vm_printf("block defer middle\n"); defer vm_printf("block defer first (should print third)\n"); } /* 多个 defer 应逆序执行 */ defer vm_printf("defer last\n"); defer vm_printf("defer middle\n"); defer vm_printf("defer first (should print third)\n"); vm_printf("--- defer test end ---\n"); ret 0; }