Хороший способ документировать #undef в doxygen - PullRequest
3 голосов
/ 24 августа 2010

В настоящее время у меня есть пара файлов #define в c, которые отключают некоторые функции оборудования для тестирования.Однако я хочу задокументировать их с помощью doxygen, когда они также не определены.

Например:

Это прекрасно работает:

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

Когда вы меняете #defineна #undef вы получаете предупреждение в doxygen, и оно не отображается в выводе, генерируемом doxygen.Я хочу задокументировать этот #define, если он определен или не определен.

Как я могу заставить doxygen документировать #undef ???

Ответы [ 3 ]

3 голосов
/ 11 сентября 2010

Определите их в заголовочном файле, который включен только в Doxygen (поместите в отдельное дерево каталогов от основного источника).

Защитите этот заголовочный файл, поместив его в определение, которое вы определяете только вНастройка Doxygen, например:

#ifdef ONLY_FOR_DOXYGEN

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
#define SIMULATE_SOME_HW_INTERFACE

#endif

Я использовал это, чтобы также условно включить определения легких классов для таких вещей, как базовые классы MFC, чтобы они отображались как основы для иерархии классов без необходимости разборавсе МФЦ.

1 голос
/ 24 августа 2010

Я нашел хитрый способ, добавив #undef под #define.Таким образом, он определен для Doxygen, но сразу не определен для компилятора.

/// \def SIMULATE_SOME_HW_INTERFACE
/// Define this when you want to simulate HW interface.
/// Comment out #undef to simulate HW interface
#define SIMULATE_SOME_HW_INTERFACE
#undef  SIMULATE_SOME_HW_INTERFACE

Я пытался выяснить, как установить SIMULATE_HW_INTERFACE в файле Doxyconfig с помощью опции PREDEFINED.Не могу заставить его работать.Итак, вот мое лучшее решение.

0 голосов
/ 29 апреля 2011

Я решил свою проблему с документированием флагов компилятора следующим образом в главном файле заголовка:

/**
 * \defgroup flags Compilerflags
 */

/**
 * \def MY_FLAG
 * \ingroup flags
 * Dokumentation....
 */
#ifndef MY_FLAG
#define MY_FLAG
#undef MY_FLAG
#else
#define MY_FLAG
#endif

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

...