如何从C / C ++源代码文件中提取特定函数以进行后续处理

时间:2009-02-11 23:31:34

标签: c function code-statistics

我正在寻找一种从一些C / C ++源代码中打印出特定函数的简单方法。例如,假设test.c中有几个定义的函数。我希望能够打印出与这些功能中只有一个相关的源代码。

编辑:对不起,我应该更清楚一点我的最终目标。我希望打印到屏幕上的功能,以便我可以使用wc来获取此特定功能的字数。此外,我希望这是命令行工具链的一部分,因此不能手动输入文件和选择文本。

3 个答案:

答案 0 :(得分:2)

您可以通过doxygen运行项目。它将索引您的所有函数(以及类,结构等),并使它们可以在多个formats中使用(包括PDF和HTML,都可以轻松打印)。

答案 1 :(得分:0)

我通常使用print-region中的print-region-with-faces(或者最好是emacs)。但是,它不是自动化的,我必须手动选择区域。

也适用于其他语言。


以下是评论中的Tom Smith

(defun print-fn (interactive) 
   (save-excursion (mark-defun) 
   (print-region)))

如果你喜欢这个,请点击Tom的用户页面链接,看看他是否值得投票......


制作这个CW,所以我不会从投票汤姆的好思想中受益。欢呼声。


澄清后编辑:这似乎没有指出OP的实际问题。唉。

答案 2 :(得分:0)

打印功能的最终目标是什么?

你想这样使用它吗?

if (error == Foo())
{
    PrintFunction(foo);
    exit(1);
}

有更简单的方法可以输出错误。如果我对你要解决的问题有了更好的了解,我可能会帮助更多。

了解如何实现这样的PrintFunction():

  
      
  1. 有一个包含函数的数据结构,包含:function line start,function line end,也许是指向函数的指针。
  2.   
  3. 编写一个打印出行数的函数   源文件。 __FILE__为您提供源文件名。
  4.   
  5. 知道函数所在的起点和终点   代码,打印功能将是微不足道的。
  6.   

这有一个恼人的缺陷,需要更新你的函数在文件中的位置的行号。但这可能可以用宏来解决。