2024年10月
    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    
無料ブログはココログ

 

« MicrosoftUpdateが失敗し続けたけど、解決できたさ | トップページ | 株:現物売り約定(ヤフー) »

2011年10月 8日 (土)

Doxygenの出力結果から構造体を展開させるプログラム

今の仕事の解析用にプログラムを作ってみた。
反応はあんまりなかった・・・。

どういうプログラムかと言うと・・・

  • C言語の構造体のメンバのデータ型が構造体(共用体も)のとき、その構造体の中身を展開させて全体を見渡せるようにするもの
  • 言語はExcel VBA
  • 出力結果はExcel表としてシートに出力。シート名は構造体名。すでに同名シートがある場合は削除してから出力(削除確認ダイアログでます)
  • DoxygenのXML出力結果をもとに構築します
  • XML出力結果のディレクトリ(index.xmlのあるフォルダ)を指定して、「XML解析」ボタンを押す→構造体名コンボボックスから構造体名を選択、または直接入力して「構造体解析」ボタンを押下。

Doxygen_struct

  • 出力結果は、メンバ名(変数)を階層的に出力、データ型、概要説明の順。

Doxygen_struct_output


■ファイルダウンロード
 ・プログラム本体(excelファイル):doxygen_struct.xls
 ・テスト対象(C言語):test1.zip
 ・Doxygen設定ファイル:Doxygen

Excel VBAなので、Excelファイルを開いたらセキュリティの警告で「マクロとActiveXを有効にする」を選択してください。

※:2011/11/29:バグフィックスとちょっとエンハンス(全構造体展開)を出来るように修正した。

■備忘録
Doxygenの出力のうち、概略説明タグ<briefdescription>に出力させるには、
(1)ソースには以下のように書く。ポイントはコメントの開始を "/**"で始めること+説明の前は"brief"を置く。
breifの前に"<"を置くことにより、コメント前のメンバについての説明と言うことになる。

#ifndef TEST_STRUCT_H
#define TEST_STRUCT_H

#include "test_define.h"

typedef unsigned long UINT32; /**< breif Datatype UINT32(unsigned long). */

/** breif Union Test2. */
typedef union uTEST2_ {
unsigned long ulmember1; /**<breif uTest2 Member ulmember1. */
unsigned int uimember2; /**<breif uTest2 Member uimember2. */
unsigned char ucmember3[5]; /**<breif uTest2 Member ucmember3. */
} uTest2;

/** breif Struct Test1_1. */
typedef struct stTEST1_1_ {
UINT32 ui32test1; /**<breif test1_1 Member test1. */
UINT8 ui8Padding[4]; /**<breif test1_1 Member Padding. */
eTEST01 eTest01; /**<breif test1_1 Member enum Test01. */
} stTest1_1;

/** breif Struct Test1. */
typedef struct stTEST1_ {
uTest2 utest2; /**<breif test1 Member test2. */
UINT32 ui32test1; /**<breif test1 Member test1. */
UINT8 ui8Padding[4]; /**<breif test1 Member Padding. */
stTest1_1 sttest1_1; /**<breif test1 Member stTest1_1. */
struct stTEST1_ *pNext; /**<breif test1 Member pNext - Next Pointer. */
} stTest1;


#endif /* TEST_STRUCT_H */

(2)Doxygenの設定は、BRIEF_MEMBER_DESC、JAVADOC_AUTOBRIEF、GENERATE_XML、XML_OUTPUTに"YES"を設定する。

« MicrosoftUpdateが失敗し続けたけど、解決できたさ | トップページ | 株:現物売り約定(ヤフー) »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック


この記事へのトラックバック一覧です: Doxygenの出力結果から構造体を展開させるプログラム:

« MicrosoftUpdateが失敗し続けたけど、解決できたさ | トップページ | 株:現物売り約定(ヤフー) »