c - 从 C 代码项目中只提取所需的函数?

标签 c linux refactoring

如何从一堆 C 源文件中提取所需的函数?有没有可以在 GNU/Linux 上使用的工具?

最好是 FOSS,但 GNU/Linux 是硬性要求。

基本上我得到了大约 10 个 .h 文件;我想获取部分代码并从头文件中获取所需的变量。然后我可以制作一个与我在另一个项目中使用的代码相对应的小 .h 文件。

我的条款可能不是 100% 正确。

最佳答案

您可能知道也可能不知道的一个工具是 cscope 。它可以用来帮助你。

对于给定的一组文件(稍后将详细介绍这意味着什么),它为您提供以下选项:

Find this C symbol:
Find this global definition:
Find functions called by this function:
Find functions calling this function:
Find this text string:
Change this text string:
Find this egrep pattern:
Find this file:
Find files #including this file:

因此,如果您知道要使用函数 humungous_frogmondifier(),您可以通过在“查找此全局定义”后键入其名称(或粘贴其名称)来查找声明或定义该函数的位置'。如果您想知道它调用了什么函数,请使用下一行。指定名称后按回车键后,您将在屏幕上的此菜单上方看到源文件中相关行的列表。您可以翻阅列表(如果条目数量超出了屏幕的显示范围),并随时按数字或字母选择显示的条目之一,在这种情况下,cscope 将启动您的编辑器文件。

那个文件列表怎么样?如果您在没有任何设置的目录中运行cscope,它将扫描该目录中的源文件并构建其交叉引用。但是,如果您愿意,可以在 cscope.files 中设置文件名列表,它会分析这些文件。您还可以在 cscope 命令行上包含 -I/path/to/directory ,它也会在这些目录中找到引用的 header 。

我在一些大型项目上使用 cscope 15.7a - 取决于项目的版本,大约有 21,000 到 25,000 个文件(以及一些较小的项目,只有 10-15,000 个文件)。设置这个项目大约需要半个小时(所以我每晚仔细重建一次索引,并使用当天的文件,接受它们在一天结束时不太准确)。它使我能够追踪未使用的东西,并找出使用东西的位置,等等。

如果您习惯了 IDE,那么它会很原始。如果您习惯了诅咒模式程序(vim 等),那么它还算友好。

关于c - 从 C 代码项目中只提取所需的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9489685/

相关文章:

c++ - 是否可以复制 GDI 句柄?

c - 为学生 ID 和分数生成正确的输出并找到最大值和最小值?

c - 如何在c中引用FARPROC

在 x11 中捕获特定窗口中的鼠标指针

c - 如何在 Linux/C 中将历史日期和时间转换为另一个时区?

linux - 验证 NAT 后面的设备公共(public) IP 地址的可靠(加密)方式

java - 在 Ubuntu-Linux 上获取 Java 中给定端口的进程名称?

javascript - 面向 JavaScript 的重构技巧资源

python-3.x - Euler 12 需要优化

javascript - 如何在 helper 中使用 unobustrive JS 重构 link_to_function ?