我有一个实际上并不存在但通过宏定义的类:
#define DEFCLASS(name,datatype) Class name { \
public: \
void clear(); \
datatype obj; \
};
DEFMETHOD(StringContainer, const char*)
...
StringContainer foo("hi!");
当然它应该是使用模板实现的,但我没有编写它,我无法更改它并且大型代码库依赖于它。
现在的问题是,我想在 doxygen 中记录 StringContainer。但是,它不是真正存在的类,所以如果我这样做:
/*!
\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。