Mic*_*ler 5 c++ templates doxygen
您好,我在使用 Doxygen 记录 C++ 类静态模板函数时遇到问题:
克拉兹.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
Run Code Online (Sandbox Code Playgroud)
克拉兹.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;
}
Run Code Online (Sandbox Code Playgroud)
Doxygen 显示:
Generating docs for compound Clazz...
xxx/clazz.cpp:10: Warning: Member func(TYPE value) (function) of class Clazz is not documented.
Run Code Online (Sandbox Code Playgroud)
当我查看 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...
Run Code Online (Sandbox Code Playgroud)
我不需要非静态文档。
有什么想法如何做到这一点吗?
谢谢。
我遇到了类似的问题,一堆模板函数在文档中出现了两次,一次是静态的,一次不是。
我在一个文件中有函数定义.inl
(有人更喜欢用于.hpp
此目的),该文件包含在.h
. 我添加EXTENSION_MAPPING inl=c++
了没有效果。我还尝试将函数定义移至 ,以.h
确保 Doxygen 在解析声明的同时看到它,但这也无济于事。这让我相信这是一个 Doxygen 错误 - 在解析成员模板定义时,它无法将其与出现关键字的适当声明关联起来,static
并且笨拙地将函数复制为非静态函数。嗯,解析 C++ 并不是一件容易的事。
我最终将.inl
文件添加到忽略列表,因为无论如何它都没有文档注释(除了其@file
本身的文档)。现在它没有出现在文件列表中,但这似乎比文档中出现虚假成员函数的危害要小。我想你可以将所有(或至少是有问题的)函数放入.inl
一个#ifndef DOXYGEN
块中并获得完美的结果。