Документирование препроцессора определяет в Doxygen

Действительно ли возможно зарегистрировать препроцессор, определяет в Doxygen? Я ожидал мочь сделать это точно так же, как переменная или функция, однако вывод Doxygen, кажется, "потерял" документацию для определения и не содержит определение себя также.

Я попробовал следующее

/**My Preprocessor Macro.*/
#define TEST_DEFINE(x) (x*x)

и

/**@def TEST_DEFINE

   My Preprocessor Macro.
*/
#define TEST_DEFINE(x) (x*x)

Я также пытался поместить их в группе (попробовал defgroup, addtogroup и круг лиц с общими интересами), а не только в "объеме файла" однако, который не имел никакого эффекта ни один (хотя другие объекты в группе были зарегистрированы, как предназначено).

Я просмотрел различные опции Doxygen, но не мог видеть ничего, что включит (или предотвратит), документация определяет.

24
задан Brian Tompsett - 汤莱恩 13 June 2016 в 10:56
поделиться

3 ответа

Да, возможно. В документации Doxygen говорится:

Чтобы задокументировать глобальные объекты (функции, определения типов, перечисление, макросы и т. Д.), вы должны задокументировать файл, в котором они определены. Другими словами, должно быть как минимум

/ *! \ file * /

или

/ ** @file * /

строка в этом файле.

Вы можете использовать @defgroup , @addtogroup и @ingroup , чтобы поместить связанные элементы в один модуль, даже если они находятся в отдельных файлах ( подробности см. в документации здесь ). Вот минимальный пример, который у меня работает (с использованием Doxygen 1.6.3):

Doxyfile :

# Empty file.

Test.h :

/** @file */

/**My Preprocessor Macro.*/ 
#define TEST_DEFINE(x) (x*x) 

/**
 * @defgroup TEST_GROUP Test Group
 *
 * @{
 */

/** Test AAA documentation. */
#define TEST_AAA (1)
/** Test BBB documentation. */
#define TEST_BBB (2)
/** Test CCC documentation. */
#define TEST_CCC (3)
/** @} */

Foo.h :

/** @file */

/**
 * @addtogroup TEST_GROUP
 *
 * @{
 */

/** @brief My Class. */     
class Foo {
    public:
        void method();
};

/** @} */

Bar.h :

/** @file */

/**
 * @ingroup TEST_GROUP
 * My Function.
 */
void Bar();

В этом случае документация TEST_DEFINE появляется в записи Test.h на вкладке Файлы в выводе HTML, а в TEST_AAA и т. Д. Определения появляются в Test Group на вкладке Modules вместе с классом Foo и функцией Bar .

Следует отметить, что если вы поместите имя файла после команды @file , например:

/** @file Test.h */

, тогда оно должно совпадать с фактическим именем файла. В противном случае документация для элементов в файле не будет создана.

Альтернативное решение, если вы не хотите добавлять команды @file , - это установить EXTRACT_ALL = YES в вашем Doxyfile.

Надеюсь, это поможет!

31
ответ дан 28 November 2019 в 23:39
поделиться

Попробуйте установить параметр EXTRACT_ALL, он установлен в моем проекте, и он создает документацию для #defines. Возможно, есть более элегантный способ сделать это без использования EXTRACT_ALL, поэтому обязательно проверьте документацию

http://www.doxygen.nl/config.html#cfg_extract_all

3
ответ дан 28 November 2019 в 23:39
поделиться

В моих файлах «C» я использую формат комментариев и строку #define вот так:

/** @brief Number of milli-seconds to wait*/
#define kTimeoutMSec (2)

Мои html-документы в конечном итоге содержат указанную мной документацию. (У меня есть @file вверху файла и EXTRACT_ALL = YES)

4
ответ дан 28 November 2019 в 23:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: