c++ c++11 enums doxygen

c++ - Documentar valores enum con doxygen



c++11 enums (3)

Con Doxygen 1.8.2, los siguientes trabajos para mí:

Utilizando ///

/// This is an enum class enum class fooenum { FOO, ///< this is foo BAR, ///< this is bar };

Utilizando /*! ... */ /*! ... */

/*! This is an enum class */ enum class fooenum { FOO, /*!< this is foo */ BAR, /*!< this is bar */ };

El registro de cambios de doxygen dice que la enum class es compatible con Doxygen 1.8.2, por lo que sospecho que puede haber algún problema de sintaxis menor en sus comandos. ¿Podría por favor comparar sus comandos con los dos fragmentos de código anteriores?

Nuevas características

Soporte añadido para C ++ 11:

strongly typed enums, e.g.: enum class E

Dado:

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 } } }

Y el archivo Doxy predeterminado hecho con doxygen -g , obtengo esto:

¿Cómo puedo documentar los valores de enumeración? Intenté poner el comentario antes / después del miembro, utilizando ///< , etc, sin éxito. ¿Podría ser esto un error en doxygen? Los ejemplos en la documentación funcionan. (Al hacer clic en el nombre de la enumeración no me lleva a ninguna parte)


El estilo de abajo me funciona:

enum class Foo { /**Foo it with A*/ A, /**Foo it with B*/ B }


Tenga en cuenta que personalmente odio tener archivos de encabezado que vayan más largos (porque documentar significa escribir al menos 2 o 3 líneas de documentación, no una palabra, por lo que generalmente no tengo suficiente con el resumen), por lo que prefiero documentar en el. archivo cpp.

Para hacer eso usas la característica / var de Doxygen.

Así que el encabezado queda al descubierto:

namespace Foo { class Foo { public: enum class Foo { A, B, C }; }; }

Y el archivo .cpp tiene:

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. */ }

De esa manera, realmente puedo documentar largamente lo que me pasa a menudo.