提取C / C ++函数原型

我想这样做:

extract_prototypes file1.c file2.cpp file3.c 

并有任何脚本/程序打印给定的C / C ++文件中定义的所有function函数原型的一个不错的列表。 它必须很好地处理多行的声明。

有没有可以做这个工作的程序? 越简单越好。

编辑:在试图编译两个C程序后,使用{perl,python,ruby}的东西的奖励积分。

该工具cproto做你想要的,并允许调整输出到您的要求。

注意:这个工具也只适用于C文件。

我使用ctags

 # p = function declaration, f = function definition ctags -x --c-kinds=fp /usr/include/hal/libhal.h 

也适用于C ++

 ctags -x --c++-kinds=pf --language-force=c++ /usr/include/c++/4.4.1/bits/deque.tcc 

请注意,您可能需要添加包含path,请使用-I /path/to/includes执行此操作。

http://cfunctions.sourceforge.net

(这只是C和C ++的有限子集。免责声明:这是我的程序。)

我曾经使用doxygen为我的C ++代码生成文档。 我不是专家,但我认为你可以使用doxygen生成函数原型的某种索引文件。

这是一个有人问一个类似的问题的线程

如果您适当地格式化您的评论,您可以尝试DOxygen 。 事实上,如果你还没有尝试过,那么我build议你先试试它 – 它会产生inheritance图以及完整的成员函数列表和描述(来自你的评论)。

gccxml很有趣,但是它打印了一个xml树。 你需要提取关于类,函数,types,甚至是类和函数的专门模板的信息。 gccxml使用GCC的parsing器,所以你不需要做最糟糕的工作,这是parsingC ++文件,你100%肯定这是最好的编译器理解。

gcc-xml可能会有所帮助,尽pipe如此,它只能完成一半你想要的工作。 您将需要对XML输出进行一些处理