在doxygen中记录C typedef

时间:2018-02-19 05:16:25

标签: 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;

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

  

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

     

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

     

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

是什么给出的?我在手册中的印象是,当评论直接位于定义之前时,您不需要@struct之类的标签,并且在上面的块中记录成员变量是合法的,而不是它们用/*< ...语法声明的行相同。 (我绝对讨厌后一种风格......)

如何才能正确识别评论?

1 个答案:

答案 0 :(得分:4)

根据文件: 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;