Подтвердить что ты не робот

Документирование значений перечисления с помощью doxygen

Дано:

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

И по умолчанию Doxyfile, сделанный с помощью doxygen -g, я получаю следующее:

generated documentation

Как я могу задокументировать значения перечисления? Я попытался помещать комментарий до/после члена, используя ///< и т.д., Безрезультатно. Может ли это быть ошибкой в ​​doxygen? Примеры работы с документами. (Нажатие на имя перечисления не приводит меня никуда)

4b9b3361

Ответ 1

С Doxygen 1.8.2 обе следующие работы для меня:

Использование ///

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

Использование /*! ... */

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

Brief DescriptionDetailed Description

doxygen changelog говорит, что enum class поддерживается в Doxygen 1.8.2, поэтому я подозреваю, что может быть какая-то незначительная проблема синтаксиса в вашем команды. Не могли бы вы сравнить ваши команды с этими двумя фрагментами?

Новые функции

Добавлена ​​поддержка С++ 11:

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

Ответ 2

Обратите внимание, что я лично ненавижу файлы заголовков, которые идут подробно (потому что документация означает запись как минимум 2 или 3 строк документации, а не одно слово, поэтому, как правило, мне не хватает с кратким), поэтому я предпочитаю документировать в файле .cpp.

Для этого вы используете функцию \var Doxygen.

Итак, заголовок загорается:

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

И файл .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.
 */

}

Таким образом, я могу действительно документировать, что часто случается со мной.

Ответ 3

Для меня работает стиль ниже:

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