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';
备注¶
生产路径;链接器诊断路径中的两次初始化语句。