1

嘿嘿,

我正在尝试用 doxygen 记录我的 C 代码,但是使用“成员之后的文档”样式似乎对我不起作用。doxygen 文档说:

在成员之后放置文档

如果要记录文件、结构、联合、类或枚举的成员,有时需要将文档块放在成员之后而不是之前。为此,您必须在注释块中添加一个额外的 < 标记。请注意,这也适用于函数的参数。

这里有些例子:

[...]

大多数情况下,人们只想在成员后面加上简短的描述。这是按如下方式完成的:

int var; //!< Brief description after the member

或者

int var; ///< Brief description after the member

最小来源示例:

/** @file  test.c */

void foo(void) {
    uint8_t bar; ///< Some random variable
}

我的 Doxyfile粘贴在这里

我没有在文档中获得对变量的一些描述,而是得到以下信息:

2.1.1 功能文档

2.1.1.1 无效 foo ( 无效 )

< 一些随机变量

有人碰巧知道为什么吗?

4

2 回答 2

6

成员文档语法适用于成员。

成员是类或结构中的值(或者您的语言可能会这样称呼它)。局部变量不是成员,因此不被 doxygen 覆盖。

这样做的原因是,通常类的成员对其状态至关重要,因此您迫切希望记录这些,因为派生类可能使用受保护的成员。

另一方面,函数的局部变量不需要此类文档。毕竟,那些是本地的。因此,一个函数应该由它的全部可观察行为来定义,因为局部变量对用户来说并不重要:

struct object_type{
    struct object_state_type state; ///< the object's state
};

void bad_documentation(void) {
    uint8_t bar; ///< Some random variable
}

/// \brief Initializes the global state of the omnipotence object.
void good_documentation(void) {
    uint8_t bar;

    /** \remark The object needs to be initialized exactly once,
    *           otherwise we have some problems.
    */
    assert(some_global_var != 0);

    /** One can check `some_global_var` whether the global object 
    *   has been initialized
    */
    some_global_var = 1;

    /// Finally, the object going to be initialized.
    impl_obj_state_init(&the_global_object.state);
}
于 2013-04-09T18:55:11.390 回答
2

Doxygen 允许您记录文件、结构、联合、类或枚举的成员。您显示的代码显示了方法的局部变量,而不是其中一个实体的成员。

于 2013-04-09T18:55:22.613 回答