通过Doxygen中的宏定义的文档函数

Víc*_*dez 6 c++ documentation doxygen

我有一个不存在但通过宏定义的类:

#define DEFCLASS(name,datatype) Class name { \
    public: \
        void clear(); \
        datatype obj; \
    };
DEFMETHOD(StringContainer, const char*)
Run Code Online (Sandbox Code Playgroud)

...

StringContainer foo("hi!");
Run Code Online (Sandbox Code Playgroud)

当然它本应该使用模板实现,但我没有写它,我无法改变它,大型代码库依赖它.

现在的问题是,我想在doxygen中记录StringContainer.但是,它不是真正存在的类,所以如果我这样做:

/*!
    \class StringContainer
    \brief A string container

    \fn void StringContainer::clear()
    \brief Clears the container
*/
Run Code Online (Sandbox Code Playgroud)

我得到了doxygen警告:

warning: documented function `StringContainer::clear' was not declared or defined.
Run Code Online (Sandbox Code Playgroud)

并且文档不包含该功能.我知道这有点棘手,但有没有办法强制doxygen有"信念"并为StringContainer创建文档,即使它没有在源代码中定义?

有可能创建假的.h文件,使doxygen相信一个类存在,同时防止构建系统包含它.这些文件可以具有.dox扩展名.这样,我将创建一个包含类定义和文档的.dox文件:

class StringContainer {
public:
    /*! Removes the contents of the container. */
    void clear();
    const char *obj;
};
Run Code Online (Sandbox Code Playgroud)

该文件实际上不会包含在构建系统中,其唯一目的是记录StringContainer.

Éri*_*ant 1

如果您在 th\xc3\xa9 doxygen 配置 (http://www.star.bnl.gov/public/comp/sofi/doxygen/config.htm) 中将 MACRO_EXPANSION 设置为“yes”,则 doxygen 将“看到”StringContainer。

\n