2

假设我有这个结构类型:

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

然后我有一个全局变量

Hidden visible;

Hidden永远不应该使用并且visible应该是 type 的唯一声明Hidden。我不想生成文档,Hidden因为我不想使用它,而是生成文档,visible其中包含有关它及其字段的所有信息。

我发现的最接近的事情是,当您记录struct没有标签的 a 时,例如:

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;

这是hacky,但它的工作原理。

于 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 回答