如何从一堆 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/