c - 获取c程序中的所有函数及其长度

标签 c bash unix

我希望能够分析 .c 文件并

  1. 列出文件中的所有方法
  2. 列出每个方法的行数

IE:如果文件是(使用伪代码):

int add(){
....Function Actions 1
....Function Actions 2
....Function Actions 3
}

int subtract{
....Function Action 1
}

结果会是这样的:

add -3
subtract -1

我一直在使用 CTAGS 做其他事情,但我不确定它是否具有此功能。

谢谢大家。

最佳答案

您可以通过自定义 GCC 来执行类似的操作。您可以轻松地编码 MELT为此目的进行扩展。 MELT 是一种扩展 GCC 的领域特定语言。

我建议测量每个函数的 Gimple 指令数量。这可能比计算行数更有意义。

您可能可以将最后一个 Gimple 的行号减去第一个 Gimple 的行号。

行数并没有真正的意义(想象一下在大括号之前或之后的注释,你如何计算它们?并且还有可以扩展到许多行、语句甚至函数的宏..)。例如,D.Wheeler 的 SLOCcount 给出的结果与例如厕所

如果文件适当缩进,您可能需要测量第 1 列左大括号和右大括号之间的差异。

关于c - 获取c程序中的所有函数及其长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753809/

相关文章:

c# - 使用 SSH.NET 将文件从 Windows 移动到 UNIX 服务器时修改的日期时间发生变化

c - 如何为 C 中声明之外的字符串赋值?总线错误/段错误

c - 为什么这个程序没有段错误?

c++ - fputc 性能和优化

c - 为什么 printf 语句被执行了不止一次?

linux - 从 cron 作业运行 bash 脚本

php - 在 Sh/Bash 和 php 中解析配置参数的最佳/最简单方法

r - macOS Big Sur 下的 Shell PATH to R

c - ps命令linux vs unix在c程序中的不同行为

bash - 循环遍历以空格分隔的字符串的简单 Unix 方式?