/usr/include/foo.h
約100万回程度はaまたは他のメンバーを見つける必要がありました。ライブラリとカーネルを呼び出すためのmanセクションがあり、それらのいくつかはデータ構造の説明を含み、一部はそうではありません。カーネルとライブラリのデータ構造の定義を見つけることができる場所はありますか?struct foo
foo_t
答え1
GNU Cライブラリに参考書これには、標準ライブラリと拡張のすべてまたはほとんどのデータ構造に関するドキュメントが含まれます。一つあるタイプインデックス。 「GNU C リファレンスマニュアル」もありますが、「GNU C リファレンスマニュアル」と同じではありません。図書館「リファレンスマニュアル」は2つの異なるものです。
データ構造をナビゲートするのに十分な文書を自動的に生成することもできます。強力な酸素(実際のコメント付きコンテンツではうまく機能しますが、この方法でおおよそ使用できます。)ここでこれを試してみましたが、/usr/include
2分もかかりませんでした(約800 MBのHTMLが生成されました)。ステップは次のとおりです。
どこかに(どこでも)デフォルト設定ファイルを作成します
doxygen -g doxygen.conf
。ファイルを編集し、次の設定を変更します。
OUTPUT_DIRECTORY = /home/foo/whatever # documentation goes here OPTIMIZE_OUTPUT_FOR_C = YES EXTRACT_ALL = YES INPUT = /usr/include FILE_PATTERNS = *.h RECURSIVE = YES GENERATE_LATEX = NO
これらのすべてはすでに構成ファイルにあるため、表示されている値を検索して変更/設定する必要があります。
生産する:
doxygen doxygen.conf
。
今開く/home/foo/whatever/html/files.html
。 1つがありますindex.html
が、おそらくWTFです。したがって、ファイルのリストは最も予測可能なエントリポイントです。豊富な「データ構造インデックス」もありますが、何らかの理由であなたが考えるすべてがここにインデックスされているわけではありません。たとえば、structstat.html
ファイルのリストから見つけることができます。asm 一般 -> stat.hただし、「Data Structure Index」には「struct stat」は記載されていません。多くの標準C libエントリはこのパターンに従います。予測可能なヘッダー()には、sys/stat.h
プラットフォーム/システム固有のヘッダーで終わるいくつかの外部項目を取得するマクロ/定義/タイプ定義がありますasm-generic.h
。以前もこんなことに気づきました。 statの例は悪くありません。少なくとも最終定義は依然としてstruct stat
代わりに呼び出されますstruct _fooX_stat
。
したがって、慣れるのに時間がかかり、最終的に使用するよりも優れていませんgrep
。また、非ユーザーフィールドを含むという欠点もあります(たとえば、struct stat
上記の説明と比較man 2 stat
)。標準ライブラリ(およびGNU拡張)の場合、リファレンスマニュアルははるかに優れています。それでもWRTマニュアルにないものがないよりはましです。本当にこの方法を使用したい場合は、ディレクトリ全体ではなく個々のディレクトリを独立して使用することをお勧めします(手がかり:そのように設定できますRECURSION = NO
)。 800MBのHTMLはかなりかさばる。