unreachable 关键字
unreachable 用于标记程序中理论上不可能到达的代码路径。它在 Zig 的类型系统中对应 noreturn 类型——这是一种底类型(Bottom Type),表示该表达式永远不会产生值。
构建模式下的行为
- 在
Debug和ReleaseSafe模式下,unreachable会触发panic,并报告"不可达代码"错误,帮助开发者发现逻辑漏洞。 - 在
ReleaseFast和ReleaseSmall模式下,编译器会假定永远不会执行到unreachable处,从而对代码进行优化(例如消除死代码分支)。如果程序实际运行到此处,则是未定义行为。
使用场景
unreachable 通常用于以下场景:
switch语句中排除不可能的分支:当你确定某些情况不会发生时。- 类型转换中的断言:如
@intCast等操作中,编译器在某些模式下会插入unreachable来检测非法值。 - 配合
noreturn函数:标记在调用永不返回的函数(如@panic、无限循环)之后的代码。
zig
const x = 1;
const y = 2;
if (x + y != 3) {
unreachable;
}