Невозможно сгенерировать документацию для определения функции, за которой следует макрос #defines - PullRequest
1 голос
/ 10 июня 2009

У меня есть файл .cpp и я обнаружил, что Doxygen не может задокументировать функцию, которая имеет следующий формат:

//!
//! \brief Test
//!        and perform operations on those points.
//!
void CTest::TestTri()
EH_Start("CTest::TestTri")
{
}
EH_Stop

EH_Start и EH_Stop являются механизмом обработки исключений и вызывают проблемы.

Как мы можем исключить их?

Ответы [ 2 ]

4 голосов
/ 11 июня 2009

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

/// \fn void CTest::TestTri()
/// \brief Test and perform operations on those points
EH_STart("CTest::TestTri") {} EH_Stop
1 голос
/ 30 декабря 2009

Предполагая, что EH_Start и EH_Stop являются определениями, вы можете заставить doxygen расширять эти макросы при обработке кода

EXPAND_AS_DEFINED = EH_Start EH_Stop

У нас есть несколько макросов для объявлений функций и классов. Без EXPAND_AS_DEFINED doxygen не создаст правильную документацию

Например:

/* C++ Code */
#define STANDARD_CONSTRUCTORS_HEADER(iCLASS) \
  public:  iCLASS(); \
  public:  virtual ~iCLASS(); \
  private: iCLASS(const iCLASS & iCopy); \
  private: iCLASS& operator=(const iCLASS &);

class Foo {
  STANDARD_CONSTRUCTORS_HEADER(Foo)
}

/* Doxyfile */
EXPAND_AS_DEFINED = STANDARD_CONSTRUCTORS_HEADER

Без EXPAND_AS_DEFINED вы не получите конструкторы Foo в документации.

...