Хороший путь к документу #undef в Доксиген

StackOverflow https://stackoverflow.com/questions/3558972

  •  01-10-2019
  •  | 
  •  

Вопрос

В настоящее время у меня есть пара #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 Where, это определено или не определено.

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

Это было полезно?

Решение

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

Охраните этот файл заголовка, упаковывая его с определите, что вы определяете только в настройке 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, поэтому они отображаются как основы для классовой иерархии, не имеющие разминки всех MFC.

Другие советы

Я нашел Kludgy Way, добавив #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 с использованием предопределенной опции. Не мог заставить его работать. Так что вот мое лучшее решение до сих пор.

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

/**
 * \defgroup flags Compilerflags
 */

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top