使用doxygen记录C++概念?

pro*_*oto 6 c++ documentation doxygen

有没有一种方便的方法来记录doxygen中的C++概念?我想在boost文档中提供类似这样的文档.

Raf*_*ffi 6

在与Doxygen挣扎之后,我终于找到了以下解决方案.

  1. 为您的概念定义一个组:使用页面不合适,因为页面应指明其子页面(从树的顶部到底部),而组表示可能有许多父组.这允许:

    • 将概念添加到一个(或多个)父概念,而不改变父概念本身(概念的细化/概括)
    • 将实体链接到多个概念,而不更改概念本身(例如,在向实现特定概念的库中添加类时)

    /*!@defgroup measurement_functor_concepts Measurement function objects
     * @ingroup generalconcepts
     * @{
     * @par Description
     * blablabla
     *
     * @par Notations
     * Let @c F be the type of the function object, @c f an instance.
     *
     * @par Valid Expressions
     * - @c f function object is ...
     * - <b>f.result()</b> returns ...
     * @}
     */
    
    Run Code Online (Sandbox Code Playgroud)
  2. concept使用一个参数定义自定义命令:

    ALIASES += concept{1}="@ingroup \1\n@par Implemented concepts:\n@ref \1"
    
    Run Code Online (Sandbox Code Playgroud)

    命令:

    • 将实体包含在定义概念的组中:实体将出现在概念的文档中(实体可能出现在几个组中)
    • 添加一个段落,Implemented concepts提供实现概念的链接.
  3. 表明特定的类/结构实现了这个概念:

    //!@brief Does things...
    //!@concept{measurement_functor_concepts}
    template <class T>
    struct my_struct: public std::unary_function<T, void> {};
    
    Run Code Online (Sandbox Code Playgroud)

我没有找到一种方法来生成一个很好的文档,如Boost(有效表达式的好表等),但至少这个文档组织正确地分隔了事情.


Jad*_*aMD 3

您可以做的是定义一个名为 Concept 的自定义标签,然后您可以按照您的描述使用它。一个例子是在 Doxygen 中使用别名机制,如下所示:

ALIASES += "con=\xrefitem con \"概念\" \"概念\" "

  • 抱歉,定义别名对于记录概念有何帮助并不明显。您能否举例说明这个答案? (3认同)