26

私はこれをしたい:

extract_prototypes file1.c file2.cpp file3.c

そして、どんなスクリプト/プログラムでも、与えられたC /C++ファイルで定義されたすべての関数の関数プロトタイプの素晴らしいリストを出力します。複数行の宣言を適切に処理する必要があります。

この仕事をすることができるプログラムはありますか?シンプルであるほど良い。

編集:2つのCプログラムをコンパイルしようとした後、{perl、python、ruby}を使用するもののボーナスポイント。

4

11 に答える 11

38

私が使う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

インクルード パスを追加する必要がある場合があることに注意してください-I /path/to/includes

于 2009-10-15T08:57:18.027 に答える
15

ツールcprotoは、必要なことを実行し、出力を要件に合わせて調整できます。

注:このツールは、C ファイルに対してのみ機能します。

于 2009-10-15T08:12:18.670 に答える
3

私は使用ctagsし、jq

ctags --output-format=json --totals=no --extras=-F --fields=nP file1.c |
jq -sr 'sort_by(.line) | .[].pattern | ltrimstr("/^") | rtrimstr("$/") | . + ";"'
于 2021-02-11T00:46:31.770 に答える
2

http://cfunctions.sourceforge.net

(これはCとC ++の限定されたサブセットのみを実行します。免責事項:これは私のプログラムです。)

于 2009-10-15T08:03:25.107 に答える
1

gccxml興味深いですが、xml ツリーを出力します。クラス、関数、型、さらにはクラスと関数の特殊なテンプレートに関する情報を抽出する必要があります。gccxmlGCC のパーサーを使用するため、C++ ファイルの解析という最悪の作業を行う必要がなく、おそらく最高のコンパイラーが理解できるものであると 100% 確信できます。

于 2009-10-15T08:39:56.313 に答える
1

以前は、doxygen を使用して C++ コードのドキュメントを生成していました。私は専門家ではありませんが、doxygen を使用して関数プロトタイプの何らかのインデックス ファイルを生成できると思います。

これは、同様の質問をしている誰かのスレッドです

于 2009-10-15T08:07:46.457 に答える
1

コメントを適切にフォーマットする場合は、DOxygenを試すことができます。実際、試したことがない場合は、とにかく試してみることをお勧めします-継承グラフと完全なメンバー関数リストと説明(コメントから)が生成されます。

于 2009-10-15T08:11:40.543 に答える
0

gcc-xmlが役立つかもしれませんが、そのままでは必要な作業の半分しか実行できません。XML出力の処理が必要になります

于 2009-10-15T08:38:54.700 に答える