1

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

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

4

3 回答 3

2

您可以通过doxygen运行您的项目。它将索引您的所有函数(以及类、结构等),并可以使它们以多种格式提供(包括 PDF 和 HTML,两者都易于打印)。

于 2009-02-12T00:24:07.937 回答
0

我通常从内部使用print-region(或最好print-region-with-facesemacs。但是,它不是自动的,我必须手动选择区域。

也适用于其他语言。


以下由于评论中的汤姆史密斯

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

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


制作这个 CW,所以我不会从人们投票支持汤姆的好想法中受益。干杯。


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

于 2009-02-11T23:56:21.640 回答
0

打印出函数的最终目标是什么?

你想这样使用它吗:

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

有更简单的方法可以输出错误所在的位置。如果我对您尝试解决的问题有更好的了解,我可能会提供更多帮助。

关于如何实现这样的 PrintFunction() 的想法:

  1. 有一个包装函数的数据结构,包含:函数行开始、函数行结束,可能还有指向函数的指针。
  2. 编写一个函数,根据源文件的编号打印出一行。 __FILE__给你源文件名。
  3. 知道函数在代码中的开始和结束位置后,打印函数将是微不足道的。

这有一个烦人的陷阱,即需要更新函数在文件中所在位置的行号。但这也许可以用宏来解决。

于 2009-02-12T00:11:41.540 回答