Функции документа, определенные с помощью макроса в DoxygenC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Функции документа, определенные с помощью макроса в Doxygen

Сообщение Anonymous »

У меня есть класс, которого на самом деле не существует, но он определен с помощью макроса:

Код: Выделить всё

#define DEFCLASS(name,datatype) Class name { \
public: \
void clear(); \
datatype obj; \
};
DEFMETHOD(StringContainer, const char*)
...

Код: Выделить всё

StringContainer foo("hi!");
Конечно, это должно было быть реализовано с использованием шаблонов, но я это не писал, я не могу его изменить, и на него опирается большая база кода.

Теперь вопрос в том, я хотел бы документировать StringContainer в doxygen. Однако на самом деле этот класс не существует, поэтому если я это сделаю:

Код: Выделить всё

/*!
\class StringContainer
\brief A string container

\fn void StringContainer::clear()
\brief Clears the container
*/
Я получаю предупреждения doxygen:

Код: Выделить всё

warning: documented function `StringContainer::clear' was not declared or defined.
И в документации нет этой функции. Я знаю, что это немного сложно, но есть ли способ заставить doxygen иметь «веру» и создать документацию для StringContainer, даже если он не определен в исходном коде?

РЕШЕНИЕ

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

Код: Выделить всё

class StringContainer {
public:
/*! Removes the contents of the container. */
void clear();
const char *obj;
};
Этот файл фактически не будет включен в систему сборки, и его единственной целью будет документирование StringContainer.

Подробнее здесь: https://stackoverflow.com/questions/105 ... in-doxygen
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»