2

私がこの構造体型を持っているとしましょう:

typedef struct Hidden Hidden;
struct Hidden
{
    int foo;
    int bar;
};

そして、私はグローバル変数を持っています

Hidden visible;

Hiddenは決して使用してvisibleはならず、 type の唯一の宣言であるべきHiddenです。のドキュメントをHidden使用したくないので生成したくありませんが、代わりに、visibleそれに関するすべての情報とそのフィールドに関するドキュメントを生成します。

私が見つけた最も近いものは、次structのようなタグなしで文書化するときです:

struct
{
    int foo; ///< Number of particals in the universe.
    int bar; ///< Number of socks in the drawer.
} Baz; ///< Nameless struct variable.

Doxygenが生成します

struct {
   int foo
       Number of particals in the universe. 
   int bar
       Number of socks in the drawer. 
} Baz
  Nameless struct variable. 

これは私が達成しようとしている種類のものですが、名前のない構造体は使用できません。

そのようなことは可能ですか?

4

2 に答える 2

3

私はそれを行う方法を見つけました。@RBEが提案したようにプロプロセッサの事前定義を使用すると、とにかくコンパイルされないdoxygen専用のコードを作成できます。したがって、これを行うだけです(そしてDOXYGEN定義済みのマクロを作成します):

typedef struct Hidden Hidden;

#ifdef DOXYGEN

struct
{
    int foo; ///< Number of particals in the universe.
    int bar; ///< Number of socks in the drawer.
} visible; ///< Nameless struct variable!

#endif

struct Hidden
{
    int foo;
    int bar;
};

Hidden visible;

ハックですが、動作します。

于 2013-03-07T20:43:03.203 に答える
0

必要なことを行う最も簡単な方法は、マクロ定義を使用して、コンパイルするコードとdoxygenを実行するコードを切り替えることです。

#define DOXYGEN

#ifdef DOXYGEN
/**
 *  @brief Describe your visible structure here.
 */
typedef struct VISIBLE
{
    int foo; //< Number of particles in the universe.
    int bar; //< Number of socks in the drawer.
} VISIBLE;
#else
typedef struct HIDDEN
{
    int foo;
    int bar;
} HIDDEN;

HIDDEN visible;
#endif

定義をコメント化またはコメント解除するだけで、DOXYGEN一方から他方に切り替えることができます。

于 2013-03-07T20:10:49.280 に答える