Действительно ли возможно зарегистрировать препроцессор, определяет в 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, но не мог видеть ничего, что включит (или предотвратит), документация определяет.
Да, возможно. В документации 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.
Надеюсь, это поможет!
Попробуйте установить параметр EXTRACT_ALL, он установлен в моем проекте, и он создает документацию для #defines. Возможно, есть более элегантный способ сделать это без использования EXTRACT_ALL, поэтому обязательно проверьте документацию
В моих файлах «C» я использую формат комментариев и строку #define вот так:
/** @brief Number of milli-seconds to wait*/
#define kTimeoutMSec (2)
Мои html-документы в конечном итоге содержат указанную мной документацию. (У меня есть @file вверху файла и EXTRACT_ALL = YES)