2012-07-02 3 views
1

У меня есть заголовочный файл C с большим количеством typedef и #defines. Я хотел бы иметь возможность получить Doxygen принимать комментарии на той же линии, как это:Одинаковая строка документации typedefs с Doxygen

typedef uint32_t U_NUM_LOGPLTNTRY;  //!< Number of U_LOGPLTENTRY 
typedef uint32_t U_NUM_RECTL;    //!< Number of U_RECTL 

и это:

#define U_SRCCOPY  0xcc0020 //!< info for srccopy 
#define U_SRCPAINT 0xee0086 //!< info for srcpaint 

Однако ни одна из этих форм работы. Для typedef комментарий применяется к следующей строке. Для #define s комментарий исчезает в эфире. Если строка //! предшествует #define, то этот комментарий связан со следующим #define. Но я действительно не хочу, чтобы компенсировать все комментарии одной строкой!

Есть ли синтаксис Doxygen для этого? Я использую Doxygen 1.8.1.1, работающий в Windows.

+1

Невозможно воспроизвести это поведение, отлично работает на Doxygen 1.8.0 (Win7) – Zeta

ответ

3

Это работает для меня. Я предполагаю, что проблема вызвана чем-то выше фрагментом, который вы нам показываете. Если есть комментарий к Doxygen сразу над typedef, Doxygen может ассоциировать его с typdef вместо встроенного комментария. Взгляните на окружающие комментарии Doxygen и убедитесь, что ничего подобного не происходит.

Вы также можете попробовать самостоятельно разместить typedefs в заголовке и посмотреть, правильно ли обрабатывает Doxygen. Если это так, то проблема, скорее всего, что-то в файле выше затронутых typedefs.

Кроме того, Doxygen производит любой полезный вывод в командной строке? Если нет, то попробуйте установить его в вашем .doxyfile:

  • QUIET=NO
  • WARNINGS=YES
  • WARN_IF_DOC_ERROR=YES
0

Я еще не работал вниз весь путь реального включаемый файл, который является довольно большой, но в небольшом тестовом файле этот формат правильно ассоциирует описание группы и описание каждой строки:

/** \defgroup ABC Description of ABC group 
    More information on the ABC group. 
    And yet more. 
    @{ 
*/ 
typedef uint32_t U_ONE_NAME;  //!< One name 
typedef uint32_t U_TWO_NAME;  //!< Two name 
/** @} */ 

оригинальный файл был «описание группы» строка:

//! Describe the next few lines 

перед теми линиями, которые были логической группой. Этот формат был неправильным - это связало описание только с следующей строкой, и, возможно, слишком многие из них в конечном итоге привели к проблеме смены.

+0

Хмм. Это порождает еще одну проблему. В формате, показанном выше, длинный (длинный!) Список \ #define указан в Макросах, но ни одна из данных группировки не появляется там. Это видно только после нажатия на член группы. Имена также отображаются в модулях. Есть ли способ вставить информацию о имени модуля (даже название группы) в строке между строками \ #define в списке Макросы? – mathog

Смежные вопросы