我在使用Doxygen记录C ++类静态模板函数时遇到问题:
Clazz.h:
#ifndef CLAZZ_H
#define CLAZZ_H
/*! \file clazz.h
* \brief Clazz declaration
* \author Me and myself
* \sa Clazz
*/
/*! \class Clazz
* \brief About class
*/
class Clazz
{
public:
/*! \fn TYPE func(TYPE value)
* \brief About static func
* \param value Parameter
* \returns Some value of \c TYPE
* \tparam TYPE Class type.
*/
template<typedef TYPE>
static TYPE func(TYPE value);
};
#endif
Clazz.cpp:
#include "clazz.h"
/*! \file clazz.cpp
* \brief Clazz implementation
* \author Me and myself
* \sa Clazz
*/
template<typedef TYPE>
TYPE Clazz::func(TYPE value)
{
return value;
}
Doxygen显示:
Generating docs for compound Clazz...
xxx/clazz.cpp:10: Warning: Member func(TYPE value) (function) of class Clazz is not documented.
当我查看HTML输出时,我可以看到该功能两次:
Public Member Functions
template<typedef TYPE> TYPE (TYPE value)
Static Public Member Functions
template<typedef TYPE> static TYPE func (TYPE value)
About func. More...
我不想要那些非静态文档。
任何想法如何做到这一点?
感谢。
答案 0 :(得分:0)
我遇到了类似的问题,一组模板函数在文档中出现两次,一次是静态的,一次不是。
我在.inl
文件中有功能定义(有人更喜欢使用.hpp
),这是.h
中包含的。我添加EXTENSION_MAPPING inl=c++
无济于事。我也尝试将函数定义移动到.h
以确保Doxygen在解析声明的同时看到它,但这也无济于事。这让我相信这是一个Doxygen错误 - 在解析成员模板定义时,它无法将其与static
关键字出现的相应声明相关联,并且笨拙地将该函数复制为非静态。好吧,解析C ++并非易事。
我最终将.inl
文件添加到忽略列表中,因为其中没有文档注释(除了@file
本身的文档)。现在它没有出现在文件列表中,但这似乎是比文档中出现虚假成员函数更小的邪恶。我想你可以将.inl
中的所有函数(或至少有问题的函数)放入#ifndef DOXYGEN
块中,并获得完美的结果。