繁体   English   中英

使用Doxygen记录C ++静态模板函数

[英]Documenting C++ static template function with Doxygen

您好我用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...

我不想要那些非静态文档。

任何想法如何做到这一点?

谢谢。

我有一个类似的问题,一堆模板函数在文档中出现两次,一次是静态的,一次不是。

我在.inl文件中有函数定义(有人更喜欢使用.hpp ),它包含在.h 我添加了EXTENSION_MAPPING inl=c++无济于事。 我也尝试将函数定义移动到.h以确保Doxygen在解析声明的同时看到它,但这也无济于事。 这让我相信这是一个Doxygen错误 - 在解析成员模板定义时,它无法将其与static关键字出现的相应声明相关联,并且笨拙地将该函数复制为非静态。 好吧,解析C ++并不是一件容易的事。

我最后添加了.inl文件以忽略列表,因为它无论如何都没有文档注释(除了@file本身的文档)。 现在它没有出现在文件列表中,但这似乎是比文档中出现虚假成员函数更小的邪恶。 我想你可以将.inl中的.inl函数(或至少有问题的函数)放入#ifndef DOXYGEN块中并获得完美的结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM