删死代码不是一行行找——从根节点往下砍 一句话: 项目里堆了大量没人调的函数分散各处一个一个删容易漏。正确做法找到根节点——最上层入口函数有没有人调。根没人调→整条调用链都是死的从根往下砍每个节点确认无依赖再删。适合谁读适合嵌入式开发者、单片机初学者及遇到类似问题的工程师为什么不能一个一个删嵌入式项目迭代久了会积累各种死代码弃用的外设驱动老芯片换掉了但老驱动留着开发中期加的测试功能后来没用上但忘了删同事离职留下的半成品模块如果看到就删、见一个删一个容易出两个问题漏删删了 A 函数但 A 调用的 B/C/D 三个函数没发现留了一堆无主代码。误删删了 A但 A 其实在另一个文件里被调用了只是你没搜到。正确方法从根往下砍第一步找根节点——谁都没调的最上层函数# 对每个可疑的函数搜有没有人调它 grep -r PWM_Config *.c # 只在定义处出现→ 根节点 grep -r Set_PWM *.c # 只在 PWM_Config 里调→ 子节点第二步画调用链PWM_Config() ← 无人调用 → 整条链死 └→ Set_PWM() ← 仅 PWM_Config 调 └→ Timer_Config() ← 仅 Set_PWM 调 └→ NVIC_Config() ← 仅 Timer_Config 调根死了整棵树都是死的。不需要单独验证每个子节点。第三步从根往下删每层确认// 删 PWM_Config → 搜一遍确认只剩定义和调用 → 删 // 删 Set_PWM → 搜一遍确认只剩定义和调用 → 删 // 删 Timer_Config → ...每删一个grep确认一次——有人调就停没人调就继续。第四步清理连带的东西死函数删完后连带要删的在哪结构体里只在死代码中用的字段.h文件extern声明.h文件#include死代码专用的头文件.c文件开头中断向量表里死函数注册的条目启动文件踩过的坑大文件别用 sed 按行号删死代码和活跃代码可能交错在一起。sed 一刀切容易把活跃代码也干掉。# 危险死代码和活跃代码在同一个文件里交错 sed -i 100,200d driver.c # 可能切掉了活函数用函数名匹配不要用行号。# 安全先用 grep 确认范围再精确删除 grep -n DeadFunc driver.c # 确认行号 # 然后只删这个函数不是一段行号删完验证残留# 删完后确认没有残留引用 grep -r DeadFunc *.c *.h # 应该只出现在注释里改文件前关掉 IDEIDEKeil/IAR/VSCode可能在后台重写项目文件。你改完一保存IDE 从缓存恢复了原始内容。改之前关掉 IDE。总结步骤做什么1grep -r找根节点无人调用的最上层函数2画出调用链根死了整链死3从根往下逐层删每层 grep 确认4清理结构体字段、extern、include5关 IDE删完 grep 验证残留死代码不一定是害留着不会导致 bug。但删错了会。不确定的时候宁愿留着。有用的话点个收藏下次调试直接用。有问题欢迎评论区交流看到了都会回。

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/9/28 1:37:33
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/27 19:13:42
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/27 15:27:56
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/9/27 19:54:03
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/27 9:16:41
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/28 2:08:29

日新闻

周新闻