跳转至

ev-mold-init-statement-record-001

字段 值
项目 rui314/mold
固定 commit 27162691b71a
路径 src/input-sections.cc
行段 L303-L313
特性 if 与 switch 的初始化语句
许可证 MIT
代码来源 项目源码
级别 manual
审核 zyuhao7 @ 2026-10-26
测试代码 否
发现方式 regex

用法

在 if 条件中声明局部 string_view,并在同一条件里检查它

为什么典型

诊断文本需要先取得源码位置再判断是否为空;初始化语句把变量限制在 if/else 作用域内,避免污染外围的 lambda。

摘录

  auto record = [&] {
    std::stringstream ss;
    if (std::string_view source = file.get_source_name(); !source.empty())
      ss << ">>> referenced by " << source << "\n";
    else
      ss << ">>> referenced by " << *this << "\n";

    ss << ">>>               " << file;
    if (std::string_view func = get_func_name(ctx, rel.r_offset); !func.empty())
      ss << ":(" << func << ")";
    ss << '\n';

备注

生产路径;链接器诊断路径中的两次初始化语句。

查看固定 commit 源码 · 返回证据索引