Documenter les valeurs enum avec doxygen
étant donné:
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
}
}
}
et le fichier doxyfile par défaut fait avec doxygen -g
, j'obtiens ceci:
Comment puis-je obtenir les valeurs d'enum? J'ai essayé de mettre le commentaire avant/après le membre, en utilisant ///<
, etc, en vain. C'est peut-être un insecte dans le doxygen? Les exemples dans le docs fonctionnent. (En cliquant sur le nom de l'enum ne m'apporte n'importe où)
3 réponses
Avec Doxygen 1.8.2, les deux suivantes de travail pour moi:
en utilisant ///
/// This is an enum class
enum class fooenum {
FOO, ///< this is foo
BAR, ///< this is bar
};
en utilisant /*! ... */
/*! This is an enum class */
enum class fooenum {
FOO, /*!< this is foo */
BAR, /*!< this is bar */
};
doxygen changelog dit que enum class
est supporté dans Doxygen 1.8.2, donc je soupçonne qu'il peut y avoir un problème de syntaxe mineur dans vos commandes. Pourriez-vous comparer vos commandes, avec les deux extraits?
Nouvelles fonctionnalités
ajout du support pour C++11:
strongly typed enums, e.g.: enum class E
notez que personnellement je déteste avoir des fichiers d'en-tête qui vont en longueur (parce que documenter signifie écrire au moins 2 ou 3 lignes de documentations, pas un mot donc je n'en ai généralement pas assez avec le brief) donc je préfère documenter dans le .fichier cpp.
pour ce faire, vous utilisez la fonction \var de Doxygen.
Donc l'en-tête est livré nu:
namespace Foo {
class Foo {
public:
enum class Foo {
A,
B,
C
};
};
}
Et la .fichier 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.
*/
}
de cette façon, je peux vraiment documenter en détail ce qui arrive souvent pour moi.
Le soufflet de style qui fonctionne pour moi:
enum class Foo {
/**Foo it with A*/
A,
/**Foo it with B*/
B
}