记录Doxygen中的C typedef

Bad*_*Zen 1 c doxygen

按照doxygen手册中的示例,我构造了测试头test.h:

/**
 * @file test.h
 */

  /** @brief This is a struct 
   *  @var foo A foo.
   *  @var bar Also a Foo.
   *  @var baz (unused field)
   */
  typedef struct {
     int foo;
     int bar;
     char *baz;
  } whatsit;
Run Code Online (Sandbox Code Playgroud)

当我使用默认值Doxyfile(由'生成doxygen -g)时,会看到警告:

... test.h:11:警告:未记录复合whatsit

... test.h:7:警告:未定义记录符号`foo A Foo`

... test.h:12:警告:未记录whatsit类的成员foo(变量)

是什么赋予了?我从手册中得到的印象是,您不需要标记,例如@struct注释直接位于定义之前,并且在上面的块中记录成员var是合法的,而不是使用它们声明的相同行/*< ...句法。(我绝对讨厌后者的风格...)

我该如何正确识别评论?

alb*_*ert 5

根据文档:24.51 \ var(变量声明)

指示注释块包含变量或枚举值的文档(全局或作为类的成员)。此命令等效于\ fn,\ property和\ typedef。

指示在\ var行仅应保留变量名称。由于变量foo不存在,但结构成员whatsit::foo必须使用完全限定名称。

类似的结构推理。

结果应为:

/**
 * @file test.h
 */

  /** @struct whatsit
   *  This is a struct
   *
   *  @var whatsit::foo
   *    A foo.
   *  @var whatsit::bar
   *    Also a Foo.
   *  @var whatsit::baz
   *    (unused field)
   */
  typedef struct {
     int foo;
     int bar;
     char *baz;
  } whatsit;
Run Code Online (Sandbox Code Playgroud)

  • 好的,答案似乎是“即使注释块紧接在前面,您也必须使用`@ struct`标记”,并且“即使注释块紧接在注释名之前,也必须使用结构名来限定变量名” ”和“您必须在@var行和doc字符串之间插入换行符”。如果我放松其中任何一种,则会出现更多警告。这也许对我来说很特别,但只是不认为我可以接受这些(特别是因为语法类似于javadoc)-太多的键入/词法房地产。较新的版本会有帮助吗?或者是时候找到一个新的文档系统。= / (2认同)