使用doxygen记录枚举值

Cor*_*son 32 c++ enums doxygen c++11

鉴于:

namespace Foo {
    class Foo {
    public:
        /// Foo enum, possible ways to foo
        enum class Foo {
            /// Foo it with an A
            A,
            /// Foo it with a B
            B,
            /// Foo it with a C
            C
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

和默认的Doxyfile doxygen -g,我得到这个:

生成的文档

如何记录枚举值?我尝试在成员之前/之后发表评论,使用///<等等都无济于事.可能这只是doxygen中的一个错误?文档中的示例有效.(点击枚举名称不会带我到任何地方)

Mas*_*Man 24

使用Doxygen 1.8.2,以下两项工作对我而言:

运用 ///

/// This is an enum class
enum class fooenum {
    FOO, ///< this is foo
    BAR, ///< this is bar
};
Run Code Online (Sandbox Code Playgroud)

运用 /*! ... */

/*! This is an enum class */
enum class fooenum {
    FOO, /*!< this is foo */
    BAR, /*!< this is bar */
};
Run Code Online (Sandbox Code Playgroud)

简要描述;简介 详细说明

doxygen的更新日志说,enum class在Doxygen的1.8.2是支持的,所以我怀疑可能有一些小的语法问题你的命令.您可以将您的命令与上述两个片段进行比较吗?

新功能

添加了对C++ 11的支持:

strongly typed enums, e.g.:
enum class E
Run Code Online (Sandbox Code Playgroud)

  • 当我还将值分配给枚举成员时,我对此解决方案有疑问。例如:枚举类位置:std :: int8_t {UNDEFINED = -1,/ *!&lt;具有值-1 * / TOPLEFT = 0,/ *!&lt;具有值0 * / TOPRIGHT = 1,/ *!&lt;具有值1 * / BOTTOMLEFT = 2,/ *!&lt;具有值2 * / BOTTOMRIGHT = 3 / *!&lt;具有值3 * /}; 在doxygen输出中,我将字段重复两次。怎么解决呢? (2认同)
  • 伟大的!请考虑创建一个新问题并自己回答,以帮助将来偶然发现该问题的其他人。 (2认同)

Ale*_*lke 9

请注意,我个人不喜欢有长篇的头文件(因为记录意味着写入至少2或3行文档,而不是一个单词因此我通常没有足够的内容)所以我更喜欢在文档中记录. cpp文件.

为此,您可以使用Doxygen的\ var功能.

所以标题是裸露的:

namespace Foo {
    class Foo {
    public:
        enum class Foo {
            A,
            B,
            C
        };
    };
}
Run Code Online (Sandbox Code Playgroud)

并且.cpp文件具有:

namespace Foo {

/** \enum Foo::Foo
 * \brief Foo enum, possible ways to foo
 *
 * All the necessary details about this enumeration.
 */

/** \var Foo::A
 * \brief Foo it with an A
 *
 * When you use A... etc.
 */

/** \var Foo::B
 * \brief Foo it with an B
 *
 * When you use B... etc.
 */

/** \var Foo::C
 * \brief Foo it with an C
 *
 * When you use C... etc.
 */

}
Run Code Online (Sandbox Code Playgroud)

这样,我可以真正地记录下我经常发生的事情.

  • 这是一个选项,但我的观点是,如果你在标题中包含你的Doxygen,那么标题是自我记录的,甚至你甚至可能不需要实际生成Doxygen文档.这就是为什么我更喜欢在标题中记录其中的任何内容,并在实现中记录其余内容. (4认同)
  • 如果您不打算将文档保持在源头附近,那么使用 Doxygen imho 毫无意义。你可以只使用 texinfo。Doxygen 的重点是使文档靠近源,因此希望文档保持最新。当有人在标题中向您的枚举添加字段时,他们可能会忘记添加到驻留在另一个文件中的文档中! (3认同)
  • 但是,如果要分发编写的库的头文件,则样式意味着该头文件没有注释。 (2认同)

Ram*_*gil 6

The below style works for me:

enum class Foo {
  /**Foo it with A*/
  A,
  /**Foo it with B*/
  B
}
Run Code Online (Sandbox Code Playgroud)